抽象
一.抽象
1.抽象方法
当一个类的方法被abstract关键字修饰时,该方法称为抽象方法。

抽象方法只能定义在抽象类中

当一个方法被定义为抽象方法后,意味着该方法不会有具体的实现,

而是在抽象类的子类中通过方法重写进行实现。

2.抽象类
抽象方法所在的类,必须被定义为抽象类。

当一个类被定义为抽象类时,他可以包含各种类型的成员,

包括属性、方法等,其中方法又可分为普通方法和抽象方法。

3.定义抽象类和抽象方法
抽象方法语法:
​ 访问修饰符 abstract 返回类型 方法名(参数列表);

抽象类语法:
​ 访问修饰符 abstract 类名{

​ }

4.普通和抽象的区别
普通方法和抽象方法相比:

抽象方法需要用修饰符abstract修饰,普通方法不需要。
普通方法有方法体,抽象方法没有。
普通类和抽象类相比:

抽象类需要用修饰符abstract修饰,普通类不需要。
普通类可以被实例化,抽象类不能被实例化。
二.使用抽象
1.优势
抽象类中已经实现的方法可以被其子类使用,使代码可以被复用;

同时提供了抽象方法,保证了子类具有自身的独特性。
案例
第八章 接口和抽象类

接口
一.接口
和抽象类不同,定义接口使用interface修饰符,访问修饰符只能是public,且可选。

实现接口使用implements关键字。

接口成员只能是全局常量和公共的抽象方法。

接口和类、抽象类是一个层次的概念,命名规则相同。

修饰符如果是public,则该接口在整个项目中可见。如果省略修饰符,该接口只在当前包中可见。

接口中可以定义常量,不能定义变量。接口中的常量必须在定义时指定初识值。

接口中的属性都默认用“public static final”修饰,即接口中的属性都是全局静态常量。

接口中的所有方法都是抽象方法,接口中的方法都默认为public。

和抽象类一样,接口同样不能实例化,接口中不能有构造方法。

接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

类只能继承一个父类,但可以通过implements实现多个接口。

一个类必须实现接口的全部方法,否则必须定义为抽象类。

若一个类在继承父类的同时又实现了多个接口,extends必须位于implements之前。

二.使用接口
定义接口语法格式:
public interface 接口名{

//接口成员

}

实现接口语法格式:
public 类名 implements 接口名{

​ 实现方法

​ 普通方法

}

接口继承接口的语法格式:
修饰符 interface 接口名 extends 父接口1,父接口2,…{

​ 常量定义

​ 方法定义

}

实现多个接口的语法格式:
class 类名 extends 父类名 implements 接口1,接口2,…{

​ 类的成员

}

接口的约定:
标准,约定规定就可以用接口来做
一般接口是 has a 的关系用接口
区别is a 是继承的关系

一般记住一句话:
有属性和方法用抽象方法
要是没有用接口作为属性

面向对象设计原则
1.摘取代码中的变化行为,形成接口

2.多用组合,少用继承

3.针对接口编程,不依赖于具体实现

4.针对扩展开放,针对改变关闭

相关文章: