黑马程序员技术交流社区
标题:
面向对象——继承
[打印本页]
作者:
窗外的雪儿飞
时间:
2015-8-30 22:10
标题:
面向对象——继承
class Demo_Animal {
public static void main(String[] args) {
Cat c = new Cat("花", 4);
System.out.println(c.getColor()+"----"+c.getLeg());
c.eat();
System.out.println("---------------------------");
Dog d = new Dog("黑", 4);
System.out.println(d.getColor()+"----"+d.getLeg());
d.eat();
}
}
class Animal {
private String color;
private int leg;
public Animal() {}
public Animal(String color, int leg) {
this.color = color;
this.leg = leg;
}
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
public void setLeg(int leg) {
this.leg = leg;
}
public int getLeg() {
return leg;
}
public void eat() {
System.out.println("吃饭");
}
}
class Cat extends Animal{
public Cat() {}
public Cat(String color, int leg) {
super(color, leg);
}
public void eat() {
System.out.println("猫吃鱼");
}
}
class Dog extends Animal{
public Dog() {}
public Dog(String color, int leg) {
super(color, leg);
}
public void eat() {
System.out.println("够吃肉");
}
}
作者:
窗外的雪儿飞
时间:
2015-8-31 00:38
继承中子父类间的成员关系:
成员变量:
“就近原则”。
构造方法:
this:代表(本类)当前对象的引用。
super:代表当前对象父类的引用。(super代表的是父类的内存空间标示)
为什么子类的构造方法前默认都有一行super()去调用父类的无参构造?
用于子类对象访问父类数据前,对父类数据进行初始化,并没有创建父类对象。
每一个构造方法的第一行代码默认都是:super(); 为什么呢?
因为子类继承类父类,就有可能来使用父类中的数据,
所以在初始化子类的数据前,必须先对父类中的数据进行初始化。
所有的类都直接或间接继承自Object类。Object类中只有一个空参构造。
父类没有空参构造怎么办?
1、super(参数) 来调用父类的带参构造。
2、this(参数) 来调用本类的其他构造。
注意:super()或者this()语句必须出现在构造方法的第一行。
this和super能同时出现在构造方法中吗?
成员方法:
方法重写Override:子父类间,子类中出现和父类完全一样的方法。(返回值的数据类型也必须一样)
方法重载Overload:同一个类中,出现方法名相同,参数列表不同的情况。 与返回值的数据类型无关。
什么时候使用方法重写?
当子类需要继承父类的功能,而功能主体上又有自己的特有功能的时候,就可以考虑使用方法重写。
注意事项:
1、父类的私有成员方法不能被子类重写。
2、重写的时候,子类方法的访问权限必须大于等于父类方法的访问权限。
3、静态只能覆盖静态。
作者:
这个肯定不重名
时间:
2015-8-31 09:31
你这么叼 你爸妈知道吗
作者:
寒星在天
时间:
2015-8-31 10:26
你这么叼 你爸妈知道吗
作者:
丶古街老巷
时间:
2015-8-31 10:29
你这么叼 你爸妈知道吗
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2