抽象类:
1:抽象类不一定带有抽象方法,它也可以带有普通方法,但是带有抽象方法的类一定是抽象类,
2:抽象类是不能被实例化的,例如普通可以通过 类名 对象名 = new 类名();用new对象来实例化类,但是抽象类 办法去实现这种情况。它可以通过父类类型指向子类对象来使用,
3:抽象方法和普通方法相比,抽象方法没有方法体,
4:如果子类没有实现父类的所有抽象方法,那么子类也必须是抽象类,
5:抽象类里没有抽象构造方法,也没有抽象静态方法。
6:抽象类里可以有非抽象的构造方法,在创建子类实例时可以调用。
public abstract class Hkil {
public Hkil(){ //父类的无参构造,
System.out.println("父类");
}
public static void main(String[] args) {
Hkil Hk = new Mkil();
}
}
class Mkil extends Hkil{
public Mkil(){ //子类的无参构造,
System.out.println("子类");
}
}
运行结果为 父类 子类 此时结论为当子类执行无参构造时会把父类的无参构造先走一遍。
接口
1:关键字interface(接口) implements(实现接口)在实现多个接口时使用逗号隔开。
2:接口里所有的成员方法必须是公开的抽象的,(public abstract)所有的成员变量必须是静态常量(public static final)
3:接口比抽象类更抽象,所有和抽象类一样不能被实例化,只能作为类型使用。
4:实现类必须实现接口的所有方法。
5:实现类可以实现多个接口,类似于多继承。
6:接口里有且只能有方法和成员变量两种,不能含有其他的。且成员变量必须显示初始化。接口里可以只有成员变量,也可以只有成员方法,
7:接口里不能有构造方法。不能被实例化,
8:接口不能实现接口,但是可以继承多个其他接口,继承多个接口的接口叫复合接口。
9:一个普通类必须实现接口的抽象方法,除非这个类是抽象类,可以不实现接口的抽象方法。