目录
1.为什么需要继承
Java当中通过类对现实中的实体进行描述,而在我们的现实生活中,这些实体不是相互孤立的,而是彼此联系。
比如猫和狗
他们虽然属于两个不一样的实体,但是他们都属于动物,这一点就是他们的共性,继承正是把这些相同点归纳成同一个类,用来提取他们的共性。
当然他们也有自己独特的特点,他们的一些行为不全相同,有各自独特的特征
用代码描述:
public class Animal{
String name;
int age;
}
public class Dog extends Animal{
void bark(){
System.out.println(name + "汪汪汪~~~");
}
}
public class Cat extends Animal{
void mew(){
System.out.println(name + "喵喵喵~~~");
}
}
2.继承的概念
继承机制:是面向程序设计代码复用的手段,它允许保有原有类的特征的基础上,增加新功能
让某个类型的对象获得另一个类型的对象的属性的方法。
继承解决的问题是:共性的抽取,实现代码的复用
上述代码中,Animal类称为父类和超类,Dog和Cat称为Animal的派生类/子类
3.继承的语法
在Java中继承父类,需要借助extends关键字
1.子类会将父类的成员变量和成员方法继承到子类中
2.子类在继承父类之后,必须添加自己特有的成员,体现于基类的不用
3.Java不支持多继承,但是支持单继承 多层继承 不同类继承同一个类
子类访问父类的成员变量和方法
--如果访问的成员变量或者方法子类中有,有限访问自己的变量
--如果访问的成员变量或者方法子类中无,则访问的是父类的成员变量或者方法,如果父类也无该方法,则编译会报错。
--如果同名,优先访问自己的,即子类会将父类覆盖(就近原则)
4.super关键字
问题:如果子类中存在与父类中相同的成员时,那如何在子类中访问父类相同名称的成员呢?
当子类域父类有相同的成员方法和变量,因为就近原则,子类会将父类覆盖
所以在Java中出现super关键字
super的用法
super可以直接引用父类的实例变量
1.在子类方法中访问父类的成员
2.可以直接调用父类的方法
3.super()可以用来调用父类的构造方法
this是当前对象的引用,当前对象即调用实例方法的对象,super相当于是子类对象中从父类继承下来部分成员的引用
注意:
1.只能在非静态方法中使用
2.在子类方法中,访问父类的成员变量和方法
子类的构造方法
1.在子类对象的构建是,需要先调用基类的构造方法,然后再执行子类的构造方法,有父才有子
如果子类的构造方法中无基类的构造方法,编译器会在子类构造方法中自动添加基类的构造方法
子类的构造方法中隐藏了一个super()
2.如果父类构造方法带参数,这编译器不会自动调用父类的构造方法,需要用户自己添加,否则会编译失败
3.使用super()调用父类的构造函数时,其必须放在首行
4.super()只能在子类的构造方法中出现一次,且不能与this同时出现