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) ;
        }
    }

    总结:

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

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

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

  • 相关阅读:
    【Redis】简介与安装
    【JAVA】 Java 连接池的工作原理
    【异常】ORA-01536: space quota exceeded for tablespace
    【Oracle】Oracle 序列步长问题
    【ORACLE】常用脚本
    【ORACLE】特殊的NULL
    【JAVA】Runtime
    【JAVA】Calendar
    出现脚本错误或者未正确调用 Page()
    小程序出现 “2 not found” 解决方案
  • 原文地址:https://www.cnblogs.com/da-peng/p/5124135.html
Copyright © 2011-2022 走看看