• 程序设计-理解java继承-遁地龙卷风


    (0)写在前面

          编程和现实世界是息息相关的,你是如何理解现实世界中的继承呢?

          继承在编程中应理解为:对父类资源(本文只讨论方法)的使用,父类方法只提供类基本的功能,父类方法之间不存在调用关系。

    (1)案例介绍

          我们有这样一个任务,控制一个人上下左右移动,我们开始构建类。

    public class Person
    
    {
    
          public void left(){}
    
          public void right(){}
    
          public void up(){}
    
          public void down(){}
    
          public static void main(String[] args)
    
          {
    
               String flag = "左";
    
               Person person = new Person();
    
               if("左".equals(flag))
    
               {
    
                     person.left();
    
               }
    
               else if("右".equals(flag))
    
               {
    
                     person.right();
    
               }
    
               else if("上".equals(flag))
    
               {
    
                     person.up();
    
               }
    
               else if("下".equals(flag))
    
               {
    
                     person.down();
    
               }
    
          }
    
    }
    

      

    等等,上面的类违反了高内聚低耦合原理,我将Person的大量方法暴漏在外面,于是我改成下面的实现

    public class Person
    
    {
    
          public static String LEFT = "左";
    
          public static String RIGHT = "右";
    
          public static String UP = "上";
    
          public static String DOWN = "下";
    
          private void left(){}
    
          private void right(){}
    
          private void up(){}
    
          private void down(){}
    
          public void move(Object flag)
    
          {
    
               if(LEFT.equals(flag))
    
               {
    
                     left();
    
               }
    
               else if(RIGHT.equals(flag))
    
               {
    
                     right();
    
               }
    
               else if(UP.equals(flag))
    
               {
    
                     up();
    
               }
    
               else if(DOWN.equals(flag))
    
               {
    
                     down();
    
               }
    
          }
    
          public static void main(String[] args)
    
          {
    
               Person person = new Person();
    
               person.move(person.LEFT);
    
          }
    
    }
    

      

    这样还是有不好的地方,move方法只是left、right、up、down方法的使用方式,它的存在不利用代码的复用,于是我换成了下面的实现。

    public class Person
    
    {
    
          public static String LEFT = "左";
    
          public static String RIGHT = "右";
    
          public static String UP = "上";
    
          public static String DOWN = "下";
    
          protected void left(){}
    
          protected void right(){}
    
          protected void up(){}
    
          protected void down(){}
    
    }
    

      

    Person类属于功能层,功能层是纯粹的,要避免组合的出现,至于这个人到底层怎么走,我们在应用层实现,应用层也是业务逻辑体现的地方。

    public class My extends Person
    
    {
    
         
    
          public void move(Object flag)
    
          {
    
               if(LEFT.equals(flag))
    
               {
    
                     left();
    
               }
    
               else if(RIGHT.equals(flag))
    
               {
    
                     right();
    
               }
    
               else if(UP.equals(flag))
    
               {
    
                     up();
    
               }
    
               else if(DOWN.equals(flag))
    
               {
    
                     down();
    
               }
    
          }
    
     
    
    }
    

      

    嗯,你可能需要只能上下移动的角色哦!

     

  • 相关阅读:
    shiro
    leetcode696 C++ 36ms 计算二进制子串
    leetcode557 C++ 56ms 反转字符串中的每个单词
    leetcode657 C++ 16ms 判断回环
    leetcode709 C++ 4ms 转换成小写字母
    leetcode141 C++ 8ms 环形链表
    leetcode160 C++ 32ms 相交链表
    leetcode234 C++ 28ms 回文链表
    leetcode203 C++ 28ms 删除链表中满足条件的节点
    leetcode83 C++ 12ms 删除有序链表中的重复元素
  • 原文地址:https://www.cnblogs.com/resolvent/p/6357702.html
Copyright © 2020-2023  润新知