抽象类和接口

本文详细解读了Java中的abstract关键字、抽象类、抽象方法,以及接口的概念、用法和区别。涉及抽象类的实例化、接口的常量与方法定义、匿名类和接口的应用,如代理模式和工厂模式。重点讲解了接口间的继承、实现类的选择和冲突解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

abstract关键字和抽象类和抽象方法:

abstract关键字:只能修饰方法

1abstract修饰类:该类不能实例化。该类的作用是让子类继承,从而重写该类中的方法,从而实现多态。

2、abstract修饰方法:有抽象方法的类必为抽象类。该方法只有声明,没有参数和方法体。

 

▲abstract只能用来修饰方法,不能修饰变量、代码块、构造器;不能用来修饰private方法,static方法,final方法,final类。

 

抽象类中除了抽象方法其他可以包含和正常类一样的内容。

▲子类若全部重写抽象类中的抽象方法,该子类才不是抽象类,可以实例化。

▲子类若没有全部重写抽象类中的抽象方法,该子类还是抽象类。

 

类的匿名类和匿名对象:

非匿名类的对象:

 

匿名类的对象:

匿名类没有事先定义出来,它是在使用的时候才被定义的。

匿名类需要有继承关系。

 

 

接口:

接口的含义:有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征。

接口内部成员的定义:

1、接口内部只可以定义全局常量(都由public static final修饰,但可以省略 public static final ,只保留“类型 变量”),抽象方法(都由public  abstract修饰,但可以省略“ public abstract 或“abstract”,只保留“返回值 方法名(形参);”或“public 返回值 方法名(形参);”),静态方法default方法

2、接口中不能定义构造器,所以自身也不能实例化

▲接口interface和类class是并列关系或者可以理解为一种特殊的类。从本质上讲,接口是一种特殊的抽象类

▲开发中,让实现类去实现(而非继承)接口。若实现类全部重写接口中的抽象方法,该类才不是抽象类,可以实例化;若实现类没有全部重写接口中的抽象方法,该类还是抽象类。

▲java类可以实现多个接口,弥补了java的单继承性。

格式:class AA extends BB implements CC,DD,EE{

}

▲接口和接口之间可以继承,包括多继承

▲与继承关系类似,接口与实现类之间存在多态性。接口的主要用途就是被实现类实现。

▲接口实际上是一种规范。

 

▲接口中定义的静态方法有执行语句,只能自己调用,不能由实现类对象调用。这条也适用于非接口,普遍性。

▲接口中的default方法也有执行语句,可以被实现类实现,重写,调用。

 

▲若父类和接口中有同名属性,在子类(或实现类)中必须显式区分(super.属性或接口.属性)

类优先原则

定义:如果子类(或实现类)继承了父类且实现了接口,父类和接口中有同名同参数的默认方法,若子类中不重写该方法,则默认调用的是父类中的方法。(之所以规定是默认方法是因为如果是同名同参数抽象方法,因为子类或实现类必须要重写抽象方法,所以起作用的还是在子类或实现类中,没必要讨论)

   接口冲突:

定义:如果实现类实现了多个接口,接口和接口中有同名同参数的默认方法,若子类中不重写该方法,则报错。

如果子类中重写了父类或  接口中的某个默认方法,则:①若要在子类中调用父类该默认方法,用“super.方法名(形参)”。②若要在实现类中调用接口中的默认方法,可以通过“接口名.super.方法名(形参)”。

 

创建接口的非匿名实现类对象:

匿名实现类对象:

 

 

接口的应用:

1、代理模式

2、工厂模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值