最近问朋友这样一个问题,得到的答案,居然是不能。网上一查,原来很多人的观点是不可以,晕了。。
我用debug跟踪了一下,子类中有父类的私有属性,但是不能访问。。
代码是这样的:
public class Test {
public static void main(String[] args) { //在这个地方设置一个断点
Dog dog=new Dog();
}
}
class Animal{
private String name="zhangsan";
private void show(){
}
}
class Dog extends Animal{
public void eat(){
}
}
用debug启动这个程序,点击下一步:
就可以查看dog的属性,它里面就有一个属性值:
dog
name "zhangsan" (id=21)当然对于它为什么不能被访问,我的理解是这样的:子类可以继承所有父类的属性与方法,但是访问牵涉到权限,这个name是只有父类可以访问的,不知道这样回答有没有错
我用debug跟踪了一下,子类中有父类的私有属性,但是不能访问。。
代码是这样的:
public class Test {
public static void main(String[] args) { //在这个地方设置一个断点
Dog dog=new Dog();
}
}
class Animal{
private String name="zhangsan";
private void show(){
}
}
class Dog extends Animal{
public void eat(){
}
}
用debug启动这个程序,点击下一步:
就可以查看dog的属性,它里面就有一个属性值:
dog
name "zhangsan" (id=21)当然对于它为什么不能被访问,我的理解是这样的:子类可以继承所有父类的属性与方法,但是访问牵涉到权限,这个name是只有父类可以访问的,不知道这样回答有没有错
你可以试下在子类Dog中重新声明个String name;
然后你去看看Dog拥有的是两个name, 一个是自己声明的, 一个是继承父类的..
所谓继承, 当然是继承父类的一切.你继承了父类的那个String name, 但是自己却没有访问权限,Dog拥有了两个, 但这两个与父类已经没有关系了, 对他们的修改都影响不了父类的name;
大概应该是这样子...
如果有错..望高手指出..
public class Test {
public static void main(String[] args) { //在这个地方设置一个断点
Dog dog=new Dog();
}
}
class Animal{
private String name="zhangsan";
private void show(){System.out.println(name);}
public void call(){
show();
}
}
class Dog extends Animal{
public void eat(){
call();
}
}
怎么查看Dog的属性?