抽象类和接口

1.抽象类

(1)概念:用abstract修饰的类叫抽象类

(2)特点:①不能实例化,但是存在构造器

②抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类

③可以没有方法体,但是必须用abstract修饰,此时的方法叫抽象方法

④抽象类可以被继承,如果子类是一个普通类,就应该重写父类的抽象方法, 并写出{};如果子类是抽象类,满足抽象类的特点即可。

⑤abstract不能与final并列修饰同一个类

⑥abstract不能与private、static、final或native并列修饰同一个方法

(3)实例:定义一个抽象动物类Animal,提供抽象方法叫play(),猫、狗都是动物类的子类,由于play()为抽象方法,所以Cat、Dog必须要实现play()方法。如下:

2.接口

(1)概念:interface,是一个抽象类型,是抽象方法的集合,接口不是类,所以没有构造方法。接口是一种用来建立类与类之间的协议,它所提供的是一种形式,没有具体的实现。接口解决了java语言不能多继承的缺陷。

(2)特点:①如果有方法,一定是抽象方法,abstract关键字可以省略

②如果有属性,一定常量,常量的修饰词:public static final;常量的名字全都大写

③没有构造器,不能实例化

④实现接口的实现(非抽象类)类必须实现该接口的所有方法,抽象类可以不用实现

⑤继承只能存在一个父类,但是一个类可以同时实现多个接口,不管这些接口之间有没有关系。

⑥Interface的所有方法访问权限自动被声明为public

⑦不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量引用(refer to)一个实现该接口的类的对象。可以使用instance of检查一个对象是否实现了某个特定的接口。例如:if(anObject instance of Comparable){}

⑧实现多接口一定要避免方法名的重复

⑨ 为了避免在接口中添加新方法后要修改所有的实现类,接口中允许定义默认方法(default方法)。

(3)实例:

3.接口与类的异同

相同点:①一个接口可以有多个方法

②接口文件保存在.java结尾的文件中,文件名使用接口名

③接口的字节码文件保存在.class结尾的文件中

④接口相对应的字节码文件必须在与包名称相匹配的目录结构中

区别:①接口不能用于实例化对象

②接口没有构造方法

③接口中的所有方法必须是抽象方法

④接口不能包含成员变量,除了static和final变量

⑤接口不是继承,而是实现

⑥接口与接口之间可以多继承

4.接口与抽象类的区别

①抽象类中的方法可以有方法体,但是接口中的不可以

②抽象类中的成员变量可以是各种类型的,接口中的成员变量只能是public static final型的

③接口中可以含有静态方法(用static修饰的方法)(只能用本类名去调用,在任何地方都可以),但是不能有静态代码块,抽象类中可以有静态代码块和静态方法

④一个类只能继承一个抽象类,但是可以实现多个接口

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值