zoukankan      html  css  js  c++  java
  • 抽象类的应用(模板设计)

    例如现在有三类事物:

    1.机器人  :充电,工作,

    2.人        :吃饭,睡觉,工作

    3.猪      :吃饭,睡觉

    要求可以任意控制人,机器人,猪的操作行为.

     父类:定义一个行为类

    abstract class Action{
        public static final int EAT = 1 ;
        public static final int SLEEP = 5 ;
        public static final int WORK = 7 ;
        public void command (int flag){
            switch(flag){
                case EAT:
                    this.eat() ;
                    break ;
                case SLEEP:
                    this.sleep() ; 
                    break;
                case WORK :
                    this.work() ;
                    break;
                case EAT+WORK:
                    this.eat() ;
                    this.work() ;
                    break ;
            }
            
        }
        public abstract void eat() ;
        public abstract void sleep() ;
        public abstract void work() ;
    }
    class Robot extends Action{
        public void eat() {
            System.out.println("Robot is charging") ;
        } 
        public void work(){
            System.out.println("Robot is working") ;
        }
        public void sleep(){}
        
    }
    class Human extends Action{
        public void eat(){
            System.out.println("man is eating") ;
        }
        public void work(){
            System.out.println("man is working") ;
        }
        public void sleep(){
            System.out.println("man is sleeping ") ;
        }
    }
    class Pig extends Action{
        public void eat(){
            System.out.println("Pig is eating") ; 
        }
        public void work(){
          
        }
        public void sleep(){
            System.out.println("Pig is sleeping ") ;
        }
    }
    public class Chouxianglei{
        public static void main(String arg[]){
            fun(new Robot()) ;
        }
        public static void fun(Action act){
            act.command(1) ;
            act.command(5) ;
        }
    }

    总结:

    如果真的要使用类继承就使用抽象类

    抽象类强制规定了子类必须要做的事情,而且可以与抽象类的普通方法配合。

    不管抽象类如何努力都有一个天生最大的问题:::单继承局限。

  • 相关阅读:
    九种常用排序的性能分析总结
    C语言输出格式总结
    线程安全的单例模式
    反射原理
    二进制的计算(计算机为什么采用补码存储数据)
    java程序员必须会的技能
    09网易校园招聘笔试题
    Spring获取ApplicationContext方式,和读取配置文件获取bean的几种方式
    【转】策略与机制分离
    VM PowerCli的简单安装和使用学习
  • 原文地址:https://www.cnblogs.com/da-peng/p/5124135.html
Copyright © 2011-2022 走看看