继承定义:
定义类时能且仅能继承一个父类。默认为继承Object类
public class 类名 extends 父类名{}
子类具有父类的部分属性和方法(是否能被继承,具体取决于修饰词)
调用子类的构造函数时会先调用父类的构造函数
单例模式的构造函数是私有的所以不能被继承。
重写和隐藏:
重写:子类在继承父类的对象方法后,重复提供该方法,叫做方法的重写
隐藏:与重写类似,重写是子类覆盖父类的对象方法,隐藏是子类覆盖父类的类方法
多态:
子类对父类方法的重写和隐藏使得同类型引用调用同名方法时可能会产生不同效果。
当多个子类分别重写某一方法,以父类引用指向不同子类对象,此时引用调用的是子类的方法
super关键字:
1. 用在子类的构造方法,主要是调用父类的默认构造方法,如果父类不止一个构造方法,可以通过super指定具体的构造函数,比如 super(name);
2. 用在子类里调用被隐藏或重写的属性或方法,super.方法名();
this关键字:
1. this在重载构造方法的第一行,调用此类的默认构造方法this();
2. this在重载构造方法的第一行,调用此类的其他构造方法this(参数);
3. 调用此对象的方法或属性,this.属性/方法名
final、final static关键字:
final:修饰的方法表示该方法在子类中不能被重写,final修饰的类表示该类不能被继承。
final变量赋值一次后不能修改。
但是final类所实例化的对象是可以被修改的,同理final数组也可以被修改。(数组为对象)
static:
接口:
public interface 接口名{
方法1();
方法2();
……
}
接口为实现该接口的类规定了应有的方法,并提供了方法名
实现接口的类必须提供接口声明的方法。
实现接口的类:
public class 类名 implement 接口名1(,接口名2){
方法1(){
}
方法2(){
}
}
抽象类:
一个含有抽象方法的类必须被声明为抽象类,用abstract修饰
public abstract class 类名{
public abstract void 方法名();
}
抽象类可以不含有抽象方法,而抽象方法一定要在抽象类中
抽象类不能被直接实例化,需要子类继承
抽象类与接口的区别与共同点:
一个类能实现多个类,一个类只能继承一个抽象类
接口与抽象类都能有具体的实体方法
接口的属性只能为public,static,final的,且无需声明