Java——抽象类

1.为什么要有抽象类

class Animal {
    public void fly() {
        System.out.println("动物飞翔");
    }
}
class Bird extends Animal {
    public void fly() {
        System.out.println("小鸟在飞翔");
    }
}
public class AbstractDemo1 {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.fly();
    }
}

在上面的代码中,我们在父类中定义了一个 fly 方法,而子类中又重写了这个方法,最终输出的结果也是子类中重写后的结果,那么说明父类中的这个方法是否实现对于子类来说毫无意义,既然父类中的方法没有实现的意义,那么我们就可以只需要父类中声明这个方法而无需去实现,这个时候就需要使用抽象类了

2.如何使用抽象类

对于如何使用抽象类,我们需 abstract 使用这个关键字来修饰方法,被 abstract  这个关键字修饰的方法就叫抽象类

抽象类是只有方法的声明,而没有方法的实现,而在一个类中出现抽象方法后,这个类也只能被 abstract 关键字修饰,即这个类只能是抽象类

abstract class Animal {
    public abstract void fly();
}
class Bird extends Animal {
    public void fly() {
        System.out.println("小鸟在飞翔");
    }
    @Override
    public void eat() {
     
    }
}
abstract class Dog extends Animal {
    @Override
    public void fly() {
     
    }
}

上述代码中, 由于 Dog 没有实现完父类中的所有方法,因此只能是一个抽象类

3.抽象类的特点

1.抽象类中可以有抽象方法,也可以有非抽象方法

abstract class Animal {
    public abstract void fly();
    public abstract void eat();
    public void print(){
    
    }
}

2.抽象类中是可以有构造方法的

abstract class Animal {
    public Animal() {
     
    }
    public abstract void fly();
    public abstract void eat();
    public void print(){
    
    }
}

3.抽象类不能直接实例化

abstract class Animal {

}
public class AbstractDemo1 {
    public static void main(String[] args) {
        new Animal(); //报错,提示不能实例化抽象类
    }
}

4.抽象类中可以声明属性

abstract class Animal {
    String name;
}

4.抽象类的作用

抽象类的作用是来规范子类的方法声明,定义抽象类后,就需要有子类,即继承

5.面试题:抽象类可以被 final 关键字修饰吗?

不可以

原因:被 final 关键字修饰的类不能有子类,也就是不能被继承;而抽象类必须有子类,也就是说有继承发生,他们是对立的,不能并存,因此 final 不能修饰抽象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值