Java的四大特性描述
继承
在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用。
抽象
抽象就是将一类实体的共同特性抽象出来,封装在一个新的概念(类) 中,所以抽象是面向对象语言的基础。
继承普通类:共享父类的方法,经常要用到的一些方法写成一个公共类继承就能调用。
继承抽象类:子类必须实现抽象类的所有方法,子类不实现那么子类也必须是抽象类。
网上流传最广泛的例子:门和警报的例子:门都有open( )和close( )两个动作
如果我们需要门具有报警alarm( )的功能,那么该如何实现?
interface Alram {
void alarm();
}
abstract class Door {
void open();
void close();
}
class AlarmDoor extends Door implements Alarm {
void open() {
//....
}
void close() {
//....
}
void alarm() {
//....
}
}
接口和抽象类的区别:
- 接口和抽象类都不能实例化
- 接口是用来实现多继承,而抽象类只能单继承
- 接口只能定义方法不能实现,而抽象类中可以有普通方法
- 一个类要实现接口的所有方法,而抽象类不需要
- 抽象类是一种模板设计,接口是一种行为的规范
多态
多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作,如下:
class Shape {
void draw() {}
}
class Circle extends Shape {
void draw() {
System.out.println("Circle.draw()");
}
}
class Square extends Shape {
void draw() {
System.out.println("Square.draw()");
}
}
class Triangle extends Shape {
void draw() {
System.out.println("Triangle.draw()");
}
}
// 以父类Shape对象调用子类的方法
public static void main(String[] args) {
Shape circle = new Circle();
Shape square = new Square();
Shape triangle = new Triangle();
}
多态存在的三个必要条件:
-
继承
-
重写
-
父类引用指向子类对象:Parent p = new Child();
重载和重写的区别:(重载实现于同一个类中;重写是子类重写父类的方法)
-
重写(Override)是父类与子类之间多态性的一种表现。
- 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。则父类中的定义如同被“屏蔽”了。
-
重载(Overload)是一个类中多态性的一种表现。
- 如果在一个类中定义了多个同名的方法,它们参数个数或类型不同,则称为方法的重载。
封装
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
@Data
public class Washer {
public static final String OFF_STATUS = "关机状态";
public static final String ON_STATUS = "开机状态";
public static final String WASHING_STATUS = "正在洗衣状态";
public static final String SUSPEND_STATUS = "关机状态";
public static final String FINISHED_STATUS = "关机状态";
// 表示 洗衣模式 1:标准 2:快洗 3:慢洗
private int mode = 1;
// 表示水位, 1:低水位 2: 中水位 3: 高水位
private int waterLevel = 1;
// 表示 洗衣机的状态 初始值为关机
private String status = OFF_STATUS;
public void on(){ //开机
}
public void off(){ // 关机
}
public void start() { //启动
}
public void suspend(){ //暂停
}
}
// 测试类
public class Test{
public static void main(String[] args) {
Washer washer = new Washer();
washer.on(); //开机
washer.setMode(2); // 洗衣模式设成快洗
washer.start(); //开始
washer.off(); // 关机
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步