楼上说的对.引用一下:子类继承了父类的所有内容,包括私有类型的内容,只不过子类没有权限访问而已,就像是父亲留给了儿子一个保险箱,但是没有留给儿子密码,保险箱是实实在在的留给儿子了!
补充一下,子类想要对私有访问 就只能通过父类提供的访问方式来进行访问.
就像父亲专门留了个管家给儿子,想要操作保险箱内的东西,就去找管家告诉管家怎么弄,但是儿子自身不可以动手.
父类就相当于蓝图,子类继承父类就是复制了一张蓝图出来然后加入了自己的东西.
蓝图中有一块东西被声明不许修改(private私有),只能通过蓝图中别的内容间接修改.(父类蓝图中提供的访问方式,子类继承的时候也复制过来了,子类可以用)
子类对蓝图怎么弄都是子类的事情了,跟父类基本上没有关系.因为子类的是复制的 原图还在父类那.子类的改动只是改动他的复制图.
但是有一个super方法,可以在复制之前发生作用.
怎么说呢.
在开始复制父类蓝图的时候,首先,子类先弄个空白的纸,然后对纸张内容进行构造(子类构造函数),但是构造之前,需要先将父类的构造拿过来,然后我才能进行我的构造,因为我对蓝图加入自己的改动是在父类蓝图的基础上.这里就是
子类构造函数中第一句代码就是个隐式的 super();是先调用父类的构造函数.
隐式的super();针对父类的构造函数是系统默认的情况,就是父类没有写构造函数,使用系统默认.如果父类有具体的构造函数,那么就需要手动在子类构造函数中,第一句就先调用super并且按照父类的构造函数的方式来写.
如
class Fu
{
Fu(int x) //父类的构造函数,带参数,非系统默认构造函数
{
x=0;
}
}
class Zi extends Fu
{
Zi(int z)
{
super(int y);
z=2;
}
子类就要先使用super并且传入参数调用父类构造函数,对我复制过来的蓝图进行父类的构造,然后我在用我自己的构造方式,在复制的蓝图上进行构造.
就相当于,我复制父类的蓝图,(设父类的图是白色的)复制的时候,系统问我,你是要蓝色的图还是要黑色的,还是要红色的,我说要蓝色的.然后系统就复制了父类的图,并涂上蓝色.
这里说的选择颜色就相当于上面传入的y参数.是你自己的选择.图拿到手后,我还想再蓝色外面包上红色的边框,然后就自己动手包边框,这里就相当于是子类
自己的构造函数,使用了z=2那个,然后从父类那复制图完成,子类自己开始玩了.
爱怎么玩就怎么玩,都和父类没关系了.
父类还是他原本的那个白色的图.
头懵懵的,看基础视频看的好困,
回答的肯定语句不通顺,例子举得肯定不好.
还望楼主海涵.
语言表达能力太差,就是说不好....
我可以补习语文了.
|