1、继承
关键字:extends
继承的作用:多态前提条件,提高代码复用率
继承的缺点:
-
父类中私有的属性和方法,子类是无法使用的
-
在java中只支持单继承,不支持多继承,但是可以支持多重继承
-
继承后子父类的关系就接合得非常的紧密,不利于程序的扩展,从而减少了程序的灵活性。
-
父类无法访问子类的属性和方法
继承语法格式:
class sonName extends fatherName { }
1.1方法重写
子类中的方法和父类中的方法名称相同,并且参数列表也相同,则称为方法重写
方法重写的特点:
-
方法名称必须相同
-
方法的参数列表必须相同
-
子类方法的访问修饰符必须大于或等于父类访问的访问修饰符
-
子类方法的返回值类型要么与父类方法的返回值类型相同,要么是父类访问返回值类型的子类
-
如果父类方法没有抛异常,那么子类方法绝对不能抛异常;如果父类方法抛出了异常,子类可以不抛异常,也可抛出父类异常的子类
-
发生在子父类中
方法重写是多态的另一个前提
1.2 super关键字
作用:用于子类调用父类中的属性或方法
如果它是调用父类中的构造器方法,那么它必须是子类构造方法的第一句
class Animal {private String name;private int age;public Animal() { }public Animal(String n, int a) {name = n;age = a;}
}class Dog extends Animal {private String color;public Dog() { }public Dog(String n, int a, String c) {super(n, a); // 调用父类的构造方法color = c;}
}
1.3 this 关键字
作用:就近原则
- 调用本类中的构造方法,如果是调用本类中的构造方法,那么它也必须是第一行
- 调用对象中的属性和方法
注意:在调用本类构造器时,必须要有一个出口
class Cat {public String name;public int age;public String color;public Cat() {System.out.println("无参构造器被调用了。。。。。");}public Cat(String n) {this();System.out.println("这是有一个name的构造器被调用了......");}public Cat(String n, int a) {this(n);System.out.println("调用了name和age的构造器.....");}public Cat(String n, int a, String c) {this(n, a);System.out.println("这是调用了name、age以及color的构造器......");}public static void main(String[] args) {Cat cat = new Cat("小花", 2, "白色");}
}
public void show() {}public void say() {this.show();}
1.4 final关键字
作用:不可修改
如果final修饰的是类,那么这个类就不能有子类,也就是说它不能被继承。
如果final修饰的是属性,那么这个属性就是常量,通常会和 static 关键字一起使用。
如果final修饰的是方法,那么这个方法就不能被重写。