封装,抽象,继承,多态。

  1. 封装:

    1. 隐藏内部实现细节,防止数据被随意修改,提升安全性;由于避免暴露了很多实现细节,只提供对于指定字段的操作或只提供几个方法,这样后续修改维护比较容易。

      下面是一个杜撰的示例

      public class Card {
          private static int countId;
          
          private String id;
          private String pwd;
          private double money;
          // 这样防止外部传入id,id是由我们自己定义的
          public Card(String pwd, double money) {
              this.id = countId++;
              this.pwd = pwd;
              this.money = money;
          }
          
          // 下面不提供id的修改,每张卡id只能是一定的,不能被修改了
      }
      
    2. 对于学习者来说,降低其理解难度。提高代码的复用性。例如:我们常用的函数就是一种封装,我们只需要传入指定参数,函数就会返回一个值。封装一个类也是如此。

      /**
       * 判断一个对象是否为person
       * @param obj 需要检测的对象
       * @return 是person及其子类返回true,否则返回false
       */
      public boolean isPerson(Object obj) {
          // ...省略
      }
      
  2. 抽象:

    1. 使用抽象来限定一个类的所有对外提供的方法。提高代码的维护性,可扩展性。

      例如:生活中的插座,有双脚插座,有三角插座。我们不在乎未来可能有多少需要连接插座的设备,我们只是规定,要想用双脚插座,你得有两个金属接触点等等。这样,只要我们制造新设备时,遵循这个双脚插座的要求就可以了。(这是可扩展性)

      可以被容易替换(符合可维护):如果我们一直在使用某品牌的插座,突然换一种品牌,基本对我们的设备不会造成太大影响。

    2. 可以有效过滤掉无需关注的信息。

      例如:我们对于车的定义是,能快速移动,能供人操作。

      public interface Car{
          void quickMove();
          void operate();
      }
      

      这样我们就知道,车是可以快速移动的。我只要见到一个可以快速移动的非生命体,且可以由人力操控,我们就可以将其定义为车。

      至于你说你自己造了一个车,拿给别人用,他变无需关注你的车是几个轮胎,什么引擎,只知道可以拿来操控并且快速移动。这就够了。他可以把自己之前用的车放在家里,改用你的车,也是可以达到快速移动的效果的。

      而且你也可以在车的基本接口基础上加上自己的方法,比如,你的车可以敞篷等。

  3. 继承

    1. 如果我们在两个及以上类中重复一遍一段代码,那我们最好还是将它放在一个父类中,由子类去继承它。这样做的好处显而易见,能达到复用

      /*
       * 房子类,基本的房子都有的元素。
       * 只要你想造房子,继承这个基本的类就可以了
       */
      public class BaseHouse{
          private String position;
          private double value;
          
          public House(String position, double value) {
              this.position = position;
              this.value = value;
          }
          // 省略getter和setter
      }
      

      但是也有一点,那就是如果父类的更改使得对于特定的子类不能使用时,那就比较不好了。

  4. 多态

    1. 指子类可以替换父类,在实际的代码中,调用子类的方法实现。上述提到的车可以换,以及房子,都是实现多态的方法。
发布了76 篇原创文章 · 获赞 53 · 访问量 4157

猜你喜欢

转载自blog.csdn.net/qq_42254247/article/details/103265106
今日推荐