java继承的问题
我写了两个类,第一个类Test1:
public class Test1 {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
第二个类Test2继承Test1:
public class Test2 extends Test1 {
public static void main(String args[]){
Test2 t2=new Test2();
t2.setName("a");
System.out.println(t2.getName());
}
}
为什么第二个类中t.setName("a")和t2.getName()都能访问到Test1的private的name?不是说子类不能继承父类的私有成员吗?
------解决方案--------------------
------解决方案--------------------是不能继承,但很矛盾的你提供了访问方法。get set
test2是没有name属性的,但是可以通过set get 访问,,这就是封装。。。。。。。。。。
父类不给子类直接访问的权限,但提供了间接访问的方法。
------解决方案--------------------举个例子说明:Test1类是爸爸,Test2类是儿子,爸爸有自己的钱,儿子没有钱,连卡都没有。 但是爸爸把卖东西和买东西的权利对儿子开放了。 假如爸爸银行卡里面的钱开始为100块钱,然后儿子帮爸爸在卖了一件衣服值50块钱,这时候那爸爸的银行卡里就有150块钱了,后来儿子又帮爸爸买包烟20块钱,银行卡里面钱就只有130块钱了。 但这中间不论什么时候,银行卡里面的钱,都不是儿子的。 儿子在没有去买东西或者卖东西的操作的时候,永远都碰不到这个钱的。
先就这样解释了,看我这解释能不能让楼主理解一下。
------解决方案--------------------Test1中定义了外部访问Test1中私有属性name的方法,Test2继承了Test1类,同时也继承了Test1中访问name的方法,所以第二个类中t.setName("a")和t2.getName()都能访问到Test1的private的name。
在类的继承中,子类确实不能直接访问父类,直接访问就是 对象名.属性,这样的访问方式就是直接访问类中的属性
------解决方案--------------------extends继承
楼主可以这么想,就是不管你父类设置了什么权限我都拿过来了
只是你private的话,我就没有你的钥匙,打不开而已。
------解决方案--------------------