抽象类定义: 在class前添加abstract关键字
在多态机制中并不需要将父类初始化对象,我们只需要子类的对象 ,所以java将抽象类不可以实例化对象。
如: class abstract Animal{} (这就是一个抽象类)
抽象类的概念:
1.抽象类是无法实例化的,无法创建对象的,抽象类是用来被子类继承的。
2. final和abstract不能联合使用,这两个关键字是对立的。
final 关键字修饰的类不能继承 final 关键字修饰的方法不能重写
(静态方法抽象没有意义)
3.抽象类的子类可以是抽象类。也可以是非抽象类。
class abstract Animal {}
class abstract Cat extends Animal {}
class Dog extends Animal {}
4. 抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。(因为存在super() )
5.抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
abstract class Animal{
public Animal() {
}
public abstract void move();
public void fly() {
System.out.println("部分会飞");
}
}
class Cat extends Animal{
//public abstract void catname(); 报错
public void move(){
System.out.println("猫在爬");//抽象方法必须重写
}
}
6.父类是抽象类 而子类不是抽象类 那么 子类必须重写父类的抽象方法
(抽象类 就是类与类间具有共同特征 抽取出来就形成抽象类 实际上抽象类除了继承没有能和意义 )