类、抽象类、接口详解及实现类选择性继承抽象方法

一、抽象类


1、概念:使用abstract来进行修饰的类,就是抽象类

2、语法:访问修饰符 abstract 返回值类型 方法名名称(参数列表)

3、注意:
A.抽象方法必须在抽象类中,抽象方法没有方法体
B.其中可以有成员变量、构造方法、成员方法、静态方法、抽象方法子类必须实现(接口、抽象类)中所有抽象方法,除非子类也是抽象类)

二、接口


1、概念:统一定义了一些规范

2、语法:访问修饰符 interface 接口名称{}

3、注意点:
A.接口编译后也是一个字节码class文.
B.接口中的变量就是静态的常量,默认使用public static final来进行修饰,所以是不可变来的
C.在jdk1.8之前,接口中只能有抽象方法,默认使用public abstract来进行修饰,在jdk1.8之后,可以有默认方法以及静态方法,在jdk1.9之后,可以有私有方法private
D.接口中不能有构造方法,所以必须通过子类来实例化对象

4、注意点:如多个接口中有相同名称的抽象方法,实现类只实现接口中一个方法(但方法的放回值要相同,不然会报错)

总结:
A.一个子类必须实现父类所有的抽象方法,无论是抽象类中的抽象方法还是接口中的
B.在同类(抽象与抽象、抽象与接口、接口与接口)继承中不用都实现其父类的抽象方法
C.如果一个子类想要选择性继承接口或抽象中的抽象方法,通过一个中间的抽象类来继承父类(接口)(全部继承,不然子类也要继承“祖父类”的方法),把它变为普通方法即可
如下:
A .接口——>抽象类——>子类

interface A{
    void eat();
    void jump();
}
abstract class B implements A{

    @Override
    public void eat() {
        
    }

    @Override
    public void jump() {

    }
}
class D extends B{

    @Override
    public void eat() {
        super.eat();
    }
}

B.抽象——>抽象——>子类

abstract class A{
    abstract void eat();
    abstract void jump();
    
}
abstract class B extends A{

    @Override
    public void eat() {

    }

    @Override
    public void jump() {

    }
}
class D extends B{

    @Override
    public void eat() {
        super.eat();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT阿生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值