在对子类对象进行初始化时,父类的构造函数也会运行,因为子类的构造函数默认第一行有一条隐式的语句 super();
super():会访问父类空参数的构造函数。而且子类所有的构造函数第一行都是super();
final:最终的。作为一个修饰符
可以修饰:类,变量,函数。
被final修饰的类不可以被继承。避免被子类重写
被final修饰的变量是一个常量,只能赋值一次,既可以修饰成员变量,也可以修饰局部变量
书写格式:常量的所有字母都是大写,单词之间用下划线链接
抽象类:当多个类出现相同功能,但是功能主体不同,这是可以进行向上抽取。这时,吃抽取功能定义,而不抽取功能主体。
修饰符 abstract 类名{
修饰符 abstract 返回值 方法名();
}
抽象类特点:
- 抽象方法一定在抽象类中
- 抽象方法和抽象类都必须被abstract关键字修饰
- 抽象类不可以用new创建对象,因为没意义
- 抽象类中的方法要被使用,必须由子类重写所有抽象类方法,建立子类对象调用
- 如果子类只覆盖重写了一部分抽象方法,那么该子类还是一个抽象类
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象
public abstract class Animal{ public abstract void eat(); } public class Cat extends Animal{ public void eat(){ System.out.println("抓老鼠"); } } public void Dog extends Animal{ public void eat(){ System.out.println("吃骨头"); } }