抽象类和接口的区别

一、抽象类

当父类的一些方法不确定时,可以用abstract关键字来修饰方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。

abstract class Animal1 {
    private String name;
    public Animal1(String name) {
        this.name = name;
    }
    // public void eat() {
    // System.out.println("这是一个动物,但是不知道吃什么..");
    // }
    public abstract void eat() ;
}

二、接口

接口可属于任何类或结构的一组相关行为,规定了实现本接口的类或接口必须拥有的一组规则。

public interface UsbInterface { //接口
    public void start();

    //规定接口的相关方法,规定的.即规范... public void start();
    public void stop();
}

三、相同点和不同点

抽象类 接口
相同点 不能被实例化 不能被实例化
当子类实现方法后才能被实例化 当子类实现相应的方法才能被实例化
不同点 可以有普通方法 没有普通方法
成员变量可以是各种类型 只能是public static final,必须赋值
只能继承一个抽象类 可以实现多个接口
可以包含代码块 不可以包含代码块
可以包含构造器 不可以包含构造器

注:在jdk1.8后,接口也可以通过default修饰,可以添加普通方法

posted @ 2023-03-14 08:38  wmr123  阅读(6)  评论(0编辑  收藏  举报