作者: 帅哥哥 时间: 2014-4-7 22:20
你的理解有点偏差
父类一般都是向上不断抽取得到的,也就是说应用的时候一般是不实例化父类的,父类的 name 属性是私有的,为的是封装与安全,但是父类的 public 方法是可以操作 name 的,而父类的 public 方法又可以被子类继承,这样,你在子类的构造方法中使用 super("小狗"),就可以用继承的方法操作了,而且,子类的构造方法默认在第一行会隐式的调用 super(); 的。看两个程序吧!
class Animal
{
private String name;
Animal(String name)
{
this.name = name;
}
//定义一个方法使用 name
public void show()
{
System.out.println(name);
}
}
class Dog extends Animal
{
Dog()
{
super("小狗");
}
Dog(String name)
{
super(name);
}
}
class Demo
{
public static void main(String[] args)
{
Dog dog1 = new Dog();
dog1.show();
Dog dog2 = new Dog("小狗");
dog2.show();
}
}
复制代码
输出是:
小狗
小狗
第二个
class Animal
{
private String name;
Animal()
{
name = "小狗";
}
//定义一个方法使用 name
public void show()
{
System.out.println(name);
}
}
class Dog extends Animal
{
//这里什么都没有,但其实有个默认的构造函数 Dog(){}
//在 Dog() 函数体的第一行,隐式的有 super(); 语句
//你可以试一下,加
//Dog(){}
//或
//Dog(){super();}
//结果是一样的
}
class Demo
{
public static void main(String[] args)
{
Dog dog1 = new Dog();
dog1.show();
}
}
复制代码
结果是:
小狗作者: 会飞的蜗牛 时间: 2014-4-12 17:32
但是父类的 public 方法是可以操作 name 的,而父类的 public 方法又可以被子类继承
Thanks