Java的四大特性描述

继承

在面向对象语言中,就是一个类可以继承另一个类的一些特性,从而可以代码重用。

image

抽象

抽象就是将一类实体的共同特性抽象出来,封装在一个新的概念(类) 中,所以抽象是面向对象语言的基础。

继承普通类:共享父类的方法,经常要用到的一些方法写成一个公共类继承就能调用。
继承抽象类:子类必须实现抽象类的所有方法,子类不实现那么子类也必须是抽象类。

网上流传最广泛的例子:门和警报的例子:门都有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();  // 关机
    }
}
posted @ 2015-10-29 18:00  空还是空  阅读(343)  评论(0编辑  收藏  举报