【Java基础知识】抽象类与接口

一、抽象类

1.定义:用abstract关键字修饰,允许包含未实现方法的类被称为抽象类。

2.使用场景:如果拥有一些方法,并且想要其中一部分默认实现!

3.定义格式:

[<修饰符>] abstract class <类名> {
    [<属性定义>]
    [<构造方法定义>]
    [abstract][<方法声明>]
}

注:
(1)抽象类不能实例化,既不能创建对象,只能作为父类用于被继承;
(2)子类继承一个抽象类后,必须要实现父类中所有的抽象方法,否则子类也要被定义为抽象类;
(3)抽象类中可以包含抽象方法,也可以不包含抽象方法;
(4)如果类中包含抽象方法,那么类必须定义成抽象类。

例:

public abstract class Students {
    private String name;
    private int number;

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

    public void setNumber(int number) {
        this.number = number;
    }
}


二、接口

1.定义:是方法声明和常量值定义的集合。

2.使用场景:在有些情况下,如果某个类的所有方法都无法具体实现,此时可以使用接口定义。接口可以理解成一个标准,其他类可以遵守该标准做不同的实现。

注:接口中的属性默认是public static final的,而方法默认是public abstract的。

3.定义格式

[<修饰符>] interface <接口名> {
    [<常量声明>]
    [<方法声明>]
}

注: 由于接口中的属性属于常量定义,因此在定义属性时必须显示指定初始值,不能使用默认初始化的形式。

4.规则:
(1)接口只包含方法声明和常量定义,即使定义普通属性,该属性在编译后也将变为常量;
(2)当其他类实现该接口时,接口中定义的所有方法都要实现,否则需要定义为抽象类;
(3)一个类可以实现多个接口;
(4)定义接口时可以使用继承,接口之间允许多继承。

注: 接口是方法声明和变量定义的集合,不允许包含变量。接口之间允许多继承,类之间只允许单继承。

5.特点

(1)接口中的成员变量默认都是public static final 类型的,可以省略不写;

(2)接口中的方法默认都是public abstract 类型的,可以省略不写,没有方法体,不能被实例化;

(3)不允许创建接口的实例,但允许定义接口类型的引用变量,该引用变量实现了这个接口的类的实例。

6.implements关键字
(1)定义:让一个类遵循某个接口

例:

//接口Piano 
interface Piano {
    int MAX = 50;
    void connection();
}

//接口Instrument
interface Instrument {
    int value = 5;
    void play();
}

//类Rain实现了Piano接口
class Rain implements Piano {

    @Override
    public void connection() {

    }
}

//类Wind实现了接口Piano和接口Instrument
class Wind implements Piano,Instrument {

    @Override
    public void connection() {

    }

    @Override
    public void play() {

    }
}

6.意义:接口体现了程序设计的多态和高内聚低耦合的设计思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值