Javase抽象类和接口初识

1.抽象类

1.1定义

如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类

从语法上将抽象类使用abstract修饰。

语法:public abstract class Animal(){}

1.2和普通类的区别

1.抽象类不能被实例化,但是可以进行向上转型。

2.可以定义和普通类一样的成员变量和成员方法。

3.抽象类中可以定义抽象方法,抽象方法是指用abstract修饰的方法。(没有聚体实现的方法)

例如:

4.抽象方法不能是private的

5.抽象方法不能被final和static修饰,因为抽象方法要被子类重写,被final和static修饰后方法不可以重写了

6.抽象类必须被继承,并且继承后⼦类要重写⽗类中的抽象⽅法,否则⼦类也是抽象类,必须要使⽤ abstract 修饰

7.抽象类中不⼀定包含抽象⽅法,但是有抽象⽅法的类⼀定是抽象类

8.抽象类中可以有构造⽅法,供⼦类创建对象时,初始化⽗类的成员变量

作用:好处是多了一层编译器的校验(预防出错)

一个类A如果是抽象类,可以不重写父类B(抽象类)的抽象方法,但是如果一个普通类继承A类

那么这个普通类必须将B,A类中所有的抽象方法重写      父债子还,层层相连

2.接口

2.1概念

接⼝就是公共的⾏为规范标准,⼤家在实现时,只要符合规范标准,就可以
通⽤。
在Java中,接⼝可以看成是:多个类的公共规范,是⼀种引⽤数据类型。

2.2语法规则

public interface 接口名称{}

提⽰:
1. 创建接⼝时,接⼝的命名⼀般以I开头.
2. 接⼝的命名⼀般使⽤"形容词"词性的单词.
3. 阿⾥编码规范中约定,接口中的方法和属性不要加任何修饰符号,保持代码的简洁性.即void methond();

2.3接口使用

接口不能直接使用,必须要有一个“实现类”来“实现”该接口,实现接口中的所有抽象方法。

格式:public class 类名称 implements 接口名称{}

注意:⼦类和⽗类之间是extends继承关系,类与接口之间是implements实现关系。

2.4接口特性

1. 接⼝类型是⼀种引⽤类型,但是不能直接new接⼝的对象

2. 接⼝中每⼀个方法都是public的抽象⽅法,即接⼝中的方法会被隐式的指定为public abstract(只
能是publicabstract,其他修饰符都会报错)

3. 接⼝中的方法是不能在接⼝中实现的,只能由实现接⼝的类来实现

4. 重写接⼝中⽅法时,不能使⽤默认的访问权限

5. 接⼝中可以含有变量,但是接⼝中的变量会被隐式的指定为public static final变量

6. 接⼝中不能有静态代码块和构造⽅法

7. 接⼝虽然不是类,但是接⼝编译完成后字节码⽂件的后缀格式也是.class

8. 如果类没有实现接⼝中的所有的抽象⽅法,则类必须设置为抽象类

9. jdk8中:接⼝中还可以包含default⽅法

2.5实现多个接口

在Java中,类和类之间是单继承的,⼀个类只能有⼀个⽗类,即Java中不⽀持多继承,但是⼀个类可以实现多个接⼝。

注意:⼀个类实现多个接⼝时,每个接⼝中的抽象⽅法都要实现,否则类必须设置为抽象类。

2.6接口间的继承

上⾯的代码展⽰了Java⾯向对象编程中最常⻅的⽤法:⼀个类继承⼀个⽗类,同时实现多种接⼝.

接⼝可以继承⼀个接⼝,达到复⽤的效果.使⽤extends关键字.

接口1继承接口2后,接口1不用实例接口2的抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值