java 基础 私有变量不可以继承吗?
2015-01-15 12:51
176 查看
[java] view
plaincopy
public class YuanXingMode {
/**
*/
public static void main(String[] args) {
<span style="color:#ff0000;">ConcretePrototype pro = new ConcretePrototype("qq");
</span> }
}
class Prototype implements Cloneable {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
@Override
protected Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
}
}
class ConcretePrototype extends Prototype {
public ConcretePrototype(String name) {
setName(name);
}
}
我在红色行上面打了断点,当Debug的时候,发现内存中有name变量的存在,我纳罕?
纳罕之处:私有变量不是不可以继承吗?我以前的理解是私有变量只是在父类中存在,在创建子类对象的时候,子类对象是 不拥有这个变量的,现在看来是错误的。
上网搜了一下结果,有一个帖子说的情况和我这个类似,解释的我觉得也到位:子类拥对父类的私有变量具有拥有权 但是不具有使用权。
再和以前学的东西联系起来,总结如下:
1、不管父类中的成员变量是静态的还是非静态的,子类统统拥有(这里不用继承概念)。
2、不管父类中的成员变量是被子类隐藏了还是没有被子类隐藏,子类统统拥有
3、不管父类中的成员变量是私有的还是其他,子类统统拥有,但是私有的不能被子类直接访问,只能通过从父类中继承的set和get方法来访问。就像上面那句话说的那样,对父类的私有变量具有拥有权,但是不具有使用权,只能通过从父类中继承的set和get方法来使用。
plaincopy
public class YuanXingMode {
/**
*/
public static void main(String[] args) {
<span style="color:#ff0000;">ConcretePrototype pro = new ConcretePrototype("qq");
</span> }
}
class Prototype implements Cloneable {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
@Override
protected Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
}
}
class ConcretePrototype extends Prototype {
public ConcretePrototype(String name) {
setName(name);
}
}
我在红色行上面打了断点,当Debug的时候,发现内存中有name变量的存在,我纳罕?
纳罕之处:私有变量不是不可以继承吗?我以前的理解是私有变量只是在父类中存在,在创建子类对象的时候,子类对象是 不拥有这个变量的,现在看来是错误的。
上网搜了一下结果,有一个帖子说的情况和我这个类似,解释的我觉得也到位:子类拥对父类的私有变量具有拥有权 但是不具有使用权。
再和以前学的东西联系起来,总结如下:
1、不管父类中的成员变量是静态的还是非静态的,子类统统拥有(这里不用继承概念)。
2、不管父类中的成员变量是被子类隐藏了还是没有被子类隐藏,子类统统拥有
3、不管父类中的成员变量是私有的还是其他,子类统统拥有,但是私有的不能被子类直接访问,只能通过从父类中继承的set和get方法来访问。就像上面那句话说的那样,对父类的私有变量具有拥有权,但是不具有使用权,只能通过从父类中继承的set和get方法来使用。
相关文章推荐
- Java:子类能够继承父类的私有变量和私有方法?
- Java编程中,子类可以用用这种方法给继承父类的成员变量赋值么?
- 2018/01/08JAVA 基础 / 接口与继承 / JAVA的修饰符FINAL详解:final修饰类、方法、基本变量、引用、常量
- 私有变量不可以继承吗?
- Java:子类是否只继承父类的非私有变量和方法?
- 继承:子类可以继承父类的私有成员变量吗??
- Java基础之子类会不会继承父类的static变量和static方法
- Java_基础_继承的成员变量
- java基础(八)Math/代码块/继承成员方法指南的关系/继承中成员变量之间的关系/方法的重写/继承中构造方法之间的关系/this和super的区别
- Java 中子类是否只继承父类的非私有变量和方法?
- JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super
- 四.OC基础--1.文档安装和方法重载,2.self和super&static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&私有方法,6.description方法
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- OC基础day4-继承,self,super,多态,类对象,SEL类型,description,私有方法与私有变量,三种访问限制
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- Java基础 成员变量的继承与覆盖
- 黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)
- Java 中子类是否只继承父类的非私有变量和方法?
- Java中子类是否可以继承父类的static变量和方法而呈现多态特性
- Java私有变量是否可继承