第五章 继承、接口和抽象类 第二节 抽象类和接口

抽象类(1):

--类:属性(0个或多个)+方法(0个或多个)

--一个完整(健康)的类:所有的方法都有实现(方法体)

--类可以没有方法,但是有方法就肯定要有实现,这才是一个完整的类

--一个完整的类才可以被实例化,被new出来

--如果一个类暂时有方法未实现,需要被定义为抽象类(若方法只有方法名字,形参列表,没有方法体,那所在的类就被定义为抽象类)

抽象类(2):

当图形未知时(如三角形、正方形),无法给出calArea的具体实现,因此此方法被定义为abstract。

--抽象类关键字abstract声明

--抽象类的组成:

(1)成员变量,个数不限

(2)具体方法,方法有实现,个数不限

(3)抽象方法,加上abstract关键字,个数不限

注意:上述定义虽然没有意义,但是是可以这样定义的。但是abstract类是不能new的。

            但是如果有一个abstract的方法,那么类也必须是abstract的。

抽象类(3):

--抽象类也是类。一个类继承于抽象类,就不能继承于其他的(抽象)类。

--子类可以继承于抽象类,但是一定要实现父类们所有abstract的方法。如果不能完全实现,那么子类也必须被定义为抽象类。

通过地讲,如果本类想把抽象类的帽子脱掉的话,必须实现父类的所有抽象方法。如果没有完全实现父类的抽象方法,本类就摆脱不了抽象类的地位。

--只有实现父类(们)的所有抽象方法,本类才变成完整类。

接口(1):

--如果类的所有方法都没有实现,那么这个类就算是接口interface

--interface是一种特殊的类。interface也是保存在.java文件中,编译后也是.class字节码文件

--类只可以继承(extends)一个类,但是可以实现(implements)多个接口,继承和实现可以同时。条件是要继承抽象类,必须实现所有abstract的方法;要实现多个接口,必须实现接口中所定义的所有方法

--为什么要设计接口?接口设计是为了弥补单根继承的不足之处。Java中类只能继承一个类,这不是很灵活,所以呢,就给你“继承一个空类”即接口,接口里面所有的方法都是空的。

--一个类的方法,只会在当前类或者父类中定义,肯定不会在所实现的父类接口中定义。举个例子,类C继承于类A,同时也实现接口B。那么C中的某个方法f1()只会在类A或者类C中实现

接口(2):

--接口可以继承(多个)接口,没有实现的方法将会叠加

--类实现接口,就必须实现所有未实现的方法。如果没有全部实现,那么只能成为一个抽象类

--接口里可以定义变量,但是一般是常量。

 

总结:

--抽象类和接口相同点:两者都不能被实例化,不能new操作

--抽象类和接口不同点:

(1)抽象类abstract,接口interface

(2)抽象类可以有部分方法实现,接口所有方法都不能实现

(3)一个类只能继承(extends)一个(抽象)类,实现(implements)多个接口

(4)接口可以继承(extends)多个接口

(5)抽象类有构造函数,接口没有构造函数

(6)抽象类可以有main,也行运行,接口没有main函数

(7)抽象类方法可以有private/protected,接口方法都是public

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值