一、抽象类
不具体实现的方法和这个类被abstract修饰。
1、抽象类不可以被实例化。
2、抽象类当中可以有与普通类中一样的成员(变量、构造方法、普通方法、静态方法),就是不能实例化。
3、如果一个普通类继承了抽象类,那普通类中必须重写这个抽象类当中的所以抽象方法。
4、如果过一个抽象类B继承了抽象类A,抽象类B中不用重写抽象A中的抽象方法,B也可以 有自己的抽象方法。但是,如果又有一个普通类C继承了B,C中不仅要重写B中的抽象方法,还要重写A中的抽象方法。
5、抽象方法一定是要被重写的,所以它不能被private和final修饰。
abstract class A{
public abstract void func1(); //不用写括号了,直接写封号。
}
abstract class B extends A { //抽象类继承抽象类
public abstract void func2();
}
class C extends B { // 普通类继承抽象类
@Override
public void func1() { //重写
}
@Override
public void func2() { //重写
}
}
二、接口类
被interface修饰,被修饰的类第一个字母为大写I开头
1、接口当中的方法是没有具体实现的。
2、接口中的成员变量默认都是被public static final修饰的, 接口中的方法默认全都是被public abstract修饰的。
3、接口也是不可以被实例化的。
4、类实现接口通过implements关键字。
5、普通类先继承抽象类再实现接口(顺序不能乱)例:class B extends A implements ID,IC{ }
6、抽象类也可以实现接口,抽象类中可以不用重写接口类中的方法。abstract A implements ID{ }。
7、普通类可以同时继承抽象类,也可以同时实现多个接口。但是类只能继承一个。
8、接口中,可以有静态方法。
interface IShape {
void draw();
}
abstract class T {
public abstract void func();
}
class Cycle1 extends T implements IShape {
@Override
public void draw() {
}
@Override
public void func() {
}
}
接口之间的继承
一个接口可以通过extends扩展另一个接口 ,也可以扩展多个接口。
抽象类和接口类的区别 区别 抽象类 接口类 1 结构组成 普通类+抽象方法 抽象方法+全局变量 2 权限 各种权限 public 3 子类使用 使用extends关键字继承抽象类 使用implements关键字实现接口 4 关系 一个抽象类可以实现多个接口 接口不能继承抽象类,但是接口可以使用extends关键字扩展多个父接口 5 子类限制 一个子类只能继承一个抽象类 一个子类可以实现多个接口