JAVA抽象类和接口

1.抽象方法和抽象类

抽象方法:只有权限、方法类型、方法名和参数,没有方法体的方法。抽象方法必须由abstract声明

例如public abstract String play(String s);

只要在方法名或者参数后面有大括号,哪怕是空的方法体,都不是抽象方法

抽象类:含有抽象方法的类,抽象类必须用abstract声明

比如:public abstract class person{

}

抽象类只是提供一种数据模板,不能直接用它实例化对象。抽象类必须由子类继承并重写抽象类中的所有抽象方法 才能用子类实例化对象

抽象类的子类,如果没有实现抽象父类中的所有抽象方法,仍然是抽象类,则必须声明abstract

2.接口与实现类

接口的格式:

public interface 接口名{

    变量列表

    方法列表

}

接口知识点:

1.在接口中,所有变量默认的权限为 public static final

2.接口中的方法,默认权限为 public abstract

在定义接口时,虽然没有进行权限设置,但作为接口,Java会自动为它们设置权限。因此,可以总结接口的特征:

接口是一种特殊的抽象类

在接口中的变量默认为 public static final类型

3.在接口中的变量可以直接用接口名进行调用

4.接口中的方法默认权限为public abstract,因此在接口中的方法为抽象方法,与抽象类一样,接口不能用于实例化对象

5.接口实现类只有在实现所有的抽象方法后,才可以用于对象的实例化,否则接口的实现类必须声明为abstract类

6.接口实现类中,实现的方法的权限为public,无论在接口定义中是否设置,接口中的方法全部自动被设置为public

7.接口支持多继承,一个接口可以继承多个接口,接口与接口之间用“,”隔开

此外,从JDK1.8之后,接口中允许定义静态方法和默认方法

由于接口中的所有变量的权限均为public static final,这类变量的值是不能在程序运行中被修改,如果在程序运行过程中变量的值需要被修改,则不能放在interface中定义,因此,需要修改值只能放在借口实现类中定义

接口实现类格式:

class 实现类名 implemets 接口名{

    变量列表

    方法实现列表

}

注意的是,多继承的接口与一般的实现类格式一样

3.接口回调

接口回调,就是用接口声明一个变量(称为接口变量),然后用接口实现类对接口变量进行实例化,最后,通过接口变量调用接口实现类中的方法的过程

interface与abstract类的比较

1.abstract类通过继承extends,重写抽象方法实现抽象类,而接口interface则是通过实现implements重写方法实现接口

2.abstract类和接口中都有抽象方法

3.abstract类和接口interface都可以通过extends进行继承。abstract类继承abstract类只能单继承 而接口interface继承接口可以多继承

4.在接口中,只可以有常量,不能有成员变量,或者说,有static final修饰的成员变量,在运行中不能被修改。而在抽象类中,既可以有成员变量,也可以有常量

5.在抽象类中,可以有非抽象方法。在接口中,只能有抽象方法,可以不加关键字abstract,默认全部是抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值