package son;
public abstract class Mannal {
public Mannal (int age ) {
}
public void eat () {
}
public abstract void move();
}
public class Whale extends Mannal {
public void move() {
System.out.println("靠耆游泳");
}
}
package son;
public class Test {
public static void main(String[] args) {
Mannal mannal =new Whale();//上转型
mannal.move();
}
}
//为什么需要抽象类?:在多态的前提下,父类的方法体,永远不会被执行
//抽象类 是什么?:没有方法体的方法叫做抽象方法,用abstract修饰
//有什么特点?:
//1.有抽象方法,用abstract修饰
//2.抽象类中可以没有抽象方法
//3.抽象类不能创建对象;像这样:Mannal ma=new Mannal();会报错
//4.抽象类中的抽象方法必须由子类实现;子类如果没有实现抽象方法或者没有实现父类的所有抽象方法,此时,子类必须为抽象类
//5.抽象类中可以有具体的方法
//6.抽象类可以定义构造方法,方法由子类调用
//7.抽象类不能由final 修饰,被final修饰的类没有子类,此时抽象类,没有子类,其中的方法不能被调用,此时,抽象类也就没有意义了!
抽象类与接口区别
//抽象类 接口
1、定义:抽象类 abstract 接口interface
2、构造方法:抽象类有构造方法 接口没有构造方法
3、继承:抽象类只能单继承 接口可以继承多个接口
4、实现:抽象类型extends 接口implements
5、成员变量:抽象类可以定义任何合法的成员变量 接口只能定义public static final的变量即常量
6、方法:抽象类可以定义任意合法方法; 接口中只能定义抽象方法,JDK8.0+可以定义多个static或default修饰的具体方法