首先是大致的关系,一个类只能继承一个抽象类,一个类可以实现多个接口。
抽象类
而相对于类来说,抽象类与其的区别最大的就是无法实例化,所以抽象类只能作为父类,被继承。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
具体的使用例子
//抽象类A
abstract class A{
public void fun(){//方法
System.out.println("这是初始的方法");
}
public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰
}
//单继承特性
class B extends A{//B类是抽象类的子类,是一个普通类
@Override
public void print() {//强制要求重写
System.out.println("这是重写过后的方法");
}
}
//测试
public class Test {
public static void main(String[] args) {
A a = new B();//多态:向上转型
a.fun();//被子类所覆写的过的方法
}
}
接口
接口与类的区别
接口不能用于实例化对象。
接口没有构造方法。
接口中所有的方法必须是抽象方法。
接口不能包含成员变量,除了 static 和 final 变量。
接口不是被类继承了,而是要被类实现。
类不允许多继承但接口可以
>// 文件名: WarShip.java
public interface WarShip
{
public void gunType(String name);
}
// 文件名: Battleship.java
public interface Battleship extends WarShip
{
public void cannonDiameter(int diameter);
}
// 文件名: Cruiser.java
public interface Cruiser extends WarShip
{
public void speed(int speed);
}
网友评论