三大特征

三大特征,其实也没什么高大上的东西,这就是日常的东西。但是正儿八经的定义,又说不大上来。简单归简单,用起来 简直了。项目代码混乱,类之间的关系错综复杂 … 这些肯定会碰到
1586665168672-27fa7dd3-ac45-4b89-b502-6baafc325880.png

封装

利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。

例:我建一个 Cat 类,可以吧爪子,毛发这些属性都添加都 Cat 类中。
例:我们比较常见的是,把一些重复利用到的方法,封装到一个类里面。

继承

所用到的关键词 extends ,它会继承所标识类的所有的方法和属性。通常的用法是提取好几个类共同的属性,然后继承这个类,这样可以节约很多代码。
注:可别碰到啥都用继承,毕竟用 extends 后,你可能会遗忘掉它到底继承了啥,要反复查看,真的蛋疼。有时候多写几个属性也没事。

多态

多种形态嘛,下面List,它容纳的是 Instrument 但是赋值 子类,因为子类有它的全部属性和方法,可以完全替换调它。

一个 Instrument(乐器),Wind(号角) Percussion(打击乐器)都继承了 play方法,并且重写了它。执行下来,并不会执行 Percussion play 方法

  1. 著作权归https://www.pdai.tech所有。
  2. 链接:https://www.pdai.tech/md/java/basic/java-basic-oop.html
  3. public class Percussion {
  4. public void play() {
  5. System.out.println("Instument is playing...");
  6. }
  7. }
  8. public class Wind extends Instrument {
  9. public void play() {
  10. System.out.println("Wind is playing...");
  11. }
  12. }
  13. public class Percussion extends Instrument {
  14. public void play() {
  15. System.out.println("Percussion is playing...");
  16. }
  17. }
  18. public class Music {
  19. public static void main(String[] args) {
  20. List<Instrument> instruments = new ArrayList<>();
  21. instruments.add(new Wind());
  22. instruments.add(new Percussion());
  23. for(Instrument instrument : instruments) {
  24. instrument.play();
  25. }
  26. }
  27. }

抽象

补充一点吧, 这个可以作为第四大特性了。这不是我说的,很多地方都这么认为了。
关键词 abstract ,这个特性很棒。你可以定义一些公共的方法,放到 抽象类中。
例如:抽象类叫做, shape(形状),里面有 获取面积方法、获取周长方法。这个世界上有很多奇形怪状的东西,但是他们肯定有 面积 和 周长,但是公式肯定都不一样。所以就把这些方法提取出来,封装成一个抽象类,抽象类不需要实现,只需要声明出来。实现的方式让调用的类来实现。

参考: Java中抽象 java 抽象类的例子