抽象类不能够直接实例化只能通过子类实现,只能通过子类实现
抽象类也有属性、方法、代码块,抽象方法只能在抽象类中,抽象类中可以有普通方法
抽象方法只负责定义方法签名,没有方法体
当非抽象子类继承抽象的父类,子类必须重写父类中的所有抽象方法;抽象子类不需要
例如
abstract class Animal {
public Animal() {
System.out.println("Animal()");
}
public abstract void move() {
//抽象方法没有方法体
}
public void run() {//抽象类中可以有非抽象方法
System.out.println("animal run")
}
}
class Dog extends Animal{
public Dog () {
Systen.out.println("Dog()");
}
public void move() {//父类中所有抽象方法必须被非抽象子类重写
System.out.println("dog move")
}
}
class Test {
public static void main(String[] args) {
Animal animal = new Dog();
}
}
结果:Animal()
Dog()
接口是抽象方法和常量值定义的集合。
接口是一种特殊的抽象类,只包含常量和方法的定义,没有变量和方法的实现
接口是一种规范
一个类可以实现多个接口,多个无关类可以实现同一接口
public interface Runter {//gdk1.8版本中有默认实现方法
public static final int id = 1;//简写int id = 1;
接口中的成员变量只能是常量public static final可以不写
public static void start();//简写void start();
public void run();
public void stop();
}
class A implements Runter {
//必须实现所有方法
}
class B extends Runter {
}