`
hjj20040849
  • 浏览: 113578 次
  • 来自: 广州
社区版块
存档分类
最新评论

java继承中的一些 错误认识

    博客分类:
  • java
阅读更多

 

    关于继承,我想大多数人都知道,它是面向对象语言中的三大特性之一,所以在这里,关于继承的概念等我就不做详细介绍了,我主要就讲一下大家对他的认识中一些比较容易犯的错误吧。

    错误认识1、继承,是将父类中所有的属性和方法都继承下来。

    其实这个认识是错误的,继承,并不是将父类中所有的属性和方法都继承下来,而是只继承父类中公有的属性和方法,对于私有的(即是private)属性,我们可以通过对应的getter和setter方法来对其进行修改。对于私有的方法,我们可以通过其它公共的方法来对其进行调用。

下面是一个例子,大家可以运行来学习验证一下。

Person.java

 

package com.extendsStudy.model; 
 
public class Person { 
    private String private_name;    //私有的属性 
     
    public int public_age;      //公共属性 
 
    /** 
     * 私有属性private_name的getter方法 
     * @return 当前类中private_name的值 
     */ 
    public String getPrivate_name() { 
        System.out.println("调用了父类的getPrivate_name方法: " + this.private_name); 
        return private_name; 
    } 
     
    /** 
     * 私有属性private_name的setter方法 
     * @param private_name  记录中将要赋值给类中private_那么属性的变量 
     */ 
    public void setPrivate_name(String private_name) { 
        this.private_name = private_name; 
    } 
} 

 

 Boy.java

package com.extendsStudy.model; 
 
/** 
 * 继承了Person类的子类Boy 
 */ 
public class Boy extends Person{} 

 

 ExtendsTest.java

 

package com.extendsStudy.test; 
 
import com.extendsStudy.model.Boy; 
 
public class ExtendsTest { 
    public static void main(String[] args) { 
        Boy boy = new Boy();    //创建一个boy对象 
        boy.public_age = 11;    //变量必须先声明再赋值最后才能使用,因为在model类中没有赋值,所以在这里要记得赋值 
        System.out.println(boy.public_age);     //输出public_age属性的值 
        boy.setPrivate_name("haha");    //调用private_name属性的setter方法对父类中的private_name属性进行复制 
        System.out.println(boy.getPrivate_name());      //调用private_name属性的getter方法获取父类中的private_name属性的值 
    } 
} 
 

 

 

 

 

0
0
分享到:
评论
4 楼 hjj20040849 2012-07-05  
feipigzi 写道
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法


我说的是内存,不是说语法,实际上你用this也可以访问父类的公有属性。。。

哦哦,我知道你的意思了。
就是像下面那样。

public class Parent {
public int name = 1;
}

public class Child extends Parent{
public void say(){
System.out.println(this.name);
}
}

public class ExtendsTest1 {
public static void main(String[] args) {
Child c = new Child();
c.say();
}
}
3 楼 feipigzi 2012-07-04  
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法


我说的是内存,不是说语法,实际上你用this也可以访问父类的公有属性。。。
2 楼 hjj20040849 2012-07-04  
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法

这个你理解错了,在子类中访问父类的东西,是用super关键字的,而this是用来访问类本身的,也就是说,this是指向本身的,而super是指向他的父类的……
1 楼 feipigzi 2012-07-04  
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法

相关推荐

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    10.1.7 Java中的单继承 248 10.1.8 Java中的类图 249 10.1.9 万类之祖——Object类 250 10.2 子类对象?父类对象? 251 10.2.1 父随子行 251 10.2.2 当构造方法遇到继承 254 10.2.3 记得给类一个无参数的构造...

    JAVA面试题最全集

    对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。 31...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    10.1.7 Java中的单继承 248 10.1.8 Java中的类图 249 10.1.9 万类之祖——Object类 250 10.2 子类对象?父类对象? 251 10.2.1 父随子行 251 10.2.2 当构造方法遇到继承 254 10.2.3 记得给类一个无参数的构造...

    Java优化编程(第2版)

    5.5.2 处理本地方法引起的java错误 5.5.3 线程与本地方法 5.6 jni数学计算与性能优化 5.7 处理好jni中的中文问题 小结 第6章 类与接口 6.1 类的构造器 6.1.1 构造器编写规则 6.2 类的继承规则 6.2.1 单线继承规则 ...

    java基础案例与开发详解案例源码全

    1.2 认识Java语言3 1.2.1 Java语言特性3 1.2.2 JavaApplet4 1.2.3 丰富的类库4 1.2.4 Java的竞争对手5 1.2.5 Java在应用领域的优势7 1.3 Java平台的体系结构7 1.3.1 JavaSE标准版8 1.3.2 JavaEE企业版10 1.3.3 Java...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...

    AIC的Java课程1-6章

    第3版 机械工业出版社  教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...

    java面试题

    2:继承:子类继承父类,子类可以拥有父类中已定义的方法,并且子类可以修改父类中的方法使其更适合特殊需求。 3:多台:不同对象对统一消息作出不同响应称之为多态 4:抽象:忽略与当前主题无关的那些方面,将...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    本书为中南大学精品教材立项项目,分为上下两篇共21章,涵盖了面向对象技术中Java开发环境配置、程序设计基础、面向对象原理以及UML的知识。本书使用的开发环境是JDK 1.6+Eclipse 3.3+Rational Rose 2003,逐步引领...

    基于java的学生信息管理系统设计与实现.doc

    所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实 世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表 示对象的方法(其作用是处理数据或同外界交互)。...

    二十三种设计模式【PDF版】

    使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用...

    在一小时内学会 C#(txt版本)

    1. C# 中(不同于 C++)的变量,总是需要你在访问它们前先进行初始化,否则你将遇到编译时错误。故而,不可能访问未初始化的变量。 2. 你不能在 C# 中访问一个“挂起”指针。 3. 超出数组边界的表达式索引值同样不可...

    C#微软培训资料

    14.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ...

    c#学习笔记.txt

    以至于正当Microsoft尽力在Visual J++基础上拓展Java功能,并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼,控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司...

    [多媒体/3D 动画/游戏] Unity3D游戏编程基础入门班 by 泰课在线(价值200元)[高清完整版][AVI+TS][1.43GB]

    课时13 认识Prefab,完善场景中的食物 课时14 认识触发器 课时15 添加捡起食物功能 课时16 日志输出和错误调试 unity经典入门课程之C#基础实例讲解(打砖块实例) 课时1 开发工具Visual Studio Tools For Unity...

    本科毕业设计开题报告(校园初恋网的设计与实现)

    Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    我们掌握了数据库及其应用技术、数据库原理、计算机网络技术等课程,对数据库的设计、应用、维护及局域网的组成有了深刻的认识与一定的动手实践能力,考取了信息处理、程序设计、数据库技术等国家IT认证。...

    asp.net知识库

    2.0正式版中callback的一些变化+使用示例(ASP.NET 2.0) Server Side ViewState 在服务器端存贮ViewState (ASP.NET 2.0) VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step ...

    本科毕业设计开题报告(学生电子作业提交与分析系统的设计与实现V2)

    目的:学生电子作业提交与分析系统的开发是为了解决传统的使用FTP服务器上传作业的作业管理方式下无法防止学生乱上传作业、上传作业到错误文件夹位置中,未能对学生上传作业的大小、类型、上传时间等进行限制,作业...

Global site tag (gtag.js) - Google Analytics