16/365 java 抽象类 接口

1.抽象类

public abstract Animal{               //抽象类

    public abstract void run();        //抽象方法

    public void shout(){                //普通成员方法
        System.out.println("shout!");
    }

}

abstract关键字,修饰类和方法,表示对某一类的类的进一步抽象

抽象方法没有方法体,也就是没有被实现,而是留给派生类去实现

抽象类没有实例对象(不能new), 子类继承抽象类后,才可以创建实例对象

子类必须重写抽象类的所有抽象方法,除非子类也是抽象类

抽象方法只存在于抽象类中

抽象类中可以有普通方法

抽象类虽然不能创建实例对象,但是有构造方法,因为创建子类的时候,需要调用父类的构造方法

缺点:类只能单继承,不能多继承,所以一个类最多只能继承一个抽象类,不如接口方便

2.接口

普通类:只有普通成员方法(具体实现)

抽象类:有抽象方法(规范)和普通方法(具体实现)

接口:只有抽象方法(规范)

public interface Animal{

    int age = 10; //默认属性类型为 public static final
    void run(); //默认方法类型为public static
    void walk();

}

public Rabbit implements Animal, Zoo, Forest{
    public void run(){
        //需重写所有方法
    }
}

接口是规范,定义了一组规则,没有具体的实现,做到了约束和实现分离

接口不能实例化,也没有构造方法

类可以implement多个接口,相当于实现了多继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值