##继承是Java语言的三大特性之一,Java语言的继承就是在已经存在的类的基础上进行扩展,从而产生新的类。已经存在的类称为父类,新产生的类称为子类。在子类中,包含了父类的属性和方法,子类也可以新增自己的属性和方法。
一、继承的语法
语法:class 子类 extends 父类{}
//这是父类
public class SuperClass {
public String superStr = "====我是父类属性====";
public void superTest(){
System.out.println("====我是父类方法====");
}
}
//这是子类
public class SubClass extends SuperClass{
public String subStr = "====我是子类属性====";
public void subTest(){
System.out.println("====我是子类方法====");
}
}
//测试类
public class TestMain {
public static void main(String[] args) {
SubClass subClass = new SubClass();
System.out.println(subClass.subStr);//子类属性
subClass.subTest();//子类方法
System.out.println(subClass.superStr);//父类属性
subClass.superTest();//父类方法
}
}
二、继承的特点
1、继承的关键字是extends(不是extend)
2、子类继承了父类的行为和特征,但是父类中private修饰的成员,子类不可以直接使用
3、子类可以重写父类的属性和方法
4、被final修饰的类不可以继承
5、Java语言的类继承是单继承,不允许一个类继承多个父类
6、Java允许多层继承
三、super和this关键字
//这是父类
public class SuperClass {
public String str = "父类属性";
public void test(){
System.out.println("父类方法");
}
}
//这是子类
public class SubClass extends SuperClass{
public String str = "子类属性";
public void test(){
System.out.println("子类方法");
}
public void superTest(){
System.out.println(super.str);
super.test();
}
public void thisTest(){
System.out.println(this.str);
this.test();
}
}
//测试类
public class TestMain {
public static void main(String[] args) {
SubClass subClass = new SubClass();
subClass.superTest();
subClass.thisTest();
}
}
打印结果:
父类属性
父类方法
子类属性
子类方法
总结:this指向当前对象的引用,super指向当前对象的父类对象的引用
四、继承初始化的过程
//这是父类
public class SuperClass {
public SuperClass(){
System.out.println("父类的构造方法");
}
}
//这是子类
public class SubClass extends SuperClass{
public SubClass(){
System.out.println("子类的构造方法");
}
}
//测试类
public class TestMain {
public static void main(String[] args) {
SubClass subClass = new SubClass();
}
}
输出结果:
父类的构造方法
子类的构造方法
总结:创建子类对象时会先调用父类的构造方法,然后再调用子类的构造方法