黑马程序员技术交流社区
标题:
反驳些许人的观点,子类继承父类所有的东西,包括private
[打印本页]
作者:
王溢君
时间:
2013-1-17 22:58
标题:
反驳些许人的观点,子类继承父类所有的东西,包括private
本帖最后由 luck28 于 2013-1-17 23:02 编辑
先看一段代码,name和age是父类私有的,但是子类继承之后,也有了。
class Person //父类
{
private String name;//私有的
private int age;
public void setName(String name)
{
this.name = name;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge(){return age;}
public String getName(){return name;}
}
class Stutents extends Person
{
private String school;
public String getSchool(){return school;}
public void setSchool(String school)
{
this.school = school;
}
}
public class TestPerson
{
public static void main(String args[])
{
Stutents stutents = new Stutents();
stutents.setName("johh");
stutents.setAge(18);
stutents.setSchool("SCH");
System.out.println(stutents.getAge());
System.out.println(stutents.getName());
System.out.println(stutents.getSchool());
}
}
/*
子类继承父类所有的东西,包括private。
拥有所有权,但没有使用权。
*/
复制代码
子类Student本身并没有定义name,但是他也有了自己的属性name,age,也就是说,他继承来了父类的,但是这个不可以直接访问,要在父类中提供方法访问。。
也就是子类继承了父类所有的东西,包括private,只是没有直接访问权。
子类对象中包含一个父类对象。子类对象大于父类对象,这是马士兵老师说的。
作者:
汪平乐
时间:
2013-1-17 23:09
{:soso_e179:}...
作者:
jonn
时间:
2013-1-18 01:29
不错不错,学习了....
作者:
23559768
时间:
2013-1-18 15:18
我感觉这个这跟继承什么 private 没什么关系吗· 子类继承父类· new的子类对象也就是父类的对象··
父类本身就是从子类中抽取出来的· 父类本身就是子类的一部分·
但是· 同时· 父类又是一个独立的类·即使你new 的是父类的对象·也没办法在它本身的类之外的类中直接掉用private修饰的属性不是吗!!!
作者:
郭嘉
时间:
2013-1-18 18:18
这应该不算是继承,A类中创建了private类型成员,而想要别的类访问,那必须要在A类中创建可以访问其中private类型的方法,而你上面的例子就是在子类中调用了父类中的方法来访问父类中的private成员,所以不是说子类继承父类中的包括private类在内的成员
你自己也说了,子类不能直接访问,而是要通过调用父类中的方法才能访问,所以这从本质来说并不是继承了父类的private成员
再举一个例子,父亲告诉儿子自己有两套房子,但是没有告诉儿子自己有一张银行卡,到时候继承的时候儿子根本不知道银行卡的事情,你能说儿子已经继承了父亲的房子和银行卡么?
作者:
王溢君
时间:
2013-1-18 20:10
子类并没有定义name成员变量,但是在下面却可以有值,这是为啥呢?难道不是子类有了自己的成员变量name?
作者:
孔斌
时间:
2013-1-18 22:17
貌似,在创建子类对象的时候,默认调用了父类空的构造方法,子类继承了父类的所有东西,包括私有成员,只有拥有权,无访问权
作者:
黄锦成
时间:
2013-1-20 11:29
是会继承的,但是没有使用权。也访问不到。只能通过从父类继承过来的公开方法访问。
这一点我在core java 书籍上也看到了
作者:
杨浩
时间:
2013-1-21 21:10
使用private使成员变量私有,不是为了不让子类继承...而是为了封装,让外部看不到。
这样只能由你定义的公有的方法来访问,这样是为了安全。
不然别的人使用你定义的类不是可以随意使用你定义的所有成员么。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2