1.基本介绍
继承可以解决代码复用的问题,一个类可以继承一个类,被继承的类我们称之为【父类】或者【超类】,另一个类称之为【子类】也叫【派生类】,子类可以通过extends关键字轻松拥有获取父类的成员变量和成员方法的能力,除了被private修饰的。在java中是单继承的,这样可以规范代码的实现。
继承其实很好理解的,我们天生就会继承来自父母的很多基因,那爸爸的很多能力或者特征你天生就会拥有。
以代码的方式帮助理解为:
// 定义一个父亲类,有名字属性和一个吃的方法
public class Father {
private String name;
public void eat(){
System.out.println("I am eating!");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
// 子类使用extends关键字
public class SonONe extends Father {
}
// 子类使用extends关键字
public class SonTwo extends Father {
}
现在无论哪个子类都能调用父类的方法:
public static void main(String[] args) {
SonONe sonONe = new SonONe();
sonONe.eat();
}
当然,儿子作为一个单独的个体,它依然可以拥有属于自己的属性和方法。
public class SonONe extends Father {
public void play(){
System.out.println("I am playing!");
}
}
经过这样的设计,我们的代码实现起来可以十分的灵活。
2、super关键字
super代表指向父类实例的引用。
(1)使用super调用父类的方法和属性
在子类中调用父类的非私有属性和方法时,大致的过程如下:
1.先在当前类中寻找。
2.当前类没有,继续向父类中寻找。
3.如果还是没有,就向父类的父类继续寻找。
4.直到到达一个所有类的共同父类,他叫Object。
总结一下:
5.子类继承了父类所有的非私有的属性和方法,可以直接调用。
6.子类在构造的时候,一定会构造一个父类,默认调用父类的无参构造器。
7.子类如果希望指定去调用父类的某个构造器, 则显式的调用一下 : super(参数列表)
8.super和this当做构造器使用时, 必须放在构造器第一行,所以只能二选一。
9.java 所有类都是 Object 类的子类, Object 是所有类的基类.
10.子类最多只能继承一个父类(指直接继承), java 中是单继承机制,我们可以使用连续继承来实现。