• java 接口与实现


    Computable.java

    public interface Computable {
       int MAX = 46;
       int f(int x);
    }

    China.java

    public class China implements Computable {  //China类实现Computable接口
       int number;
       public int f(int x) { //不要忘记public关键字
          int sum=0;
          for(int i=1;i<=x;i++) {
             sum=sum+i;
          }
          return sum;
       }
    }

    Japan.java

    public class Japan implements Computable { //Japan类实现Computable接口
       int number;
       public int f(int x) {
          return MAX+x; 
       }
    }

    Example6_1.java

    public class Example6_1 {
       public static void main(String args[]) {
          China zhang; 
          Japan henlu;
          zhang=new China();   
          henlu=new Japan();  
          zhang.number=32+Computable.MAX; 
          henlu.number=14+Computable.MAX;
          System.out.println("zhang的学号"+zhang.number+",zhang求和结果"+zhang.f(100));
          System.out.println("henlu的学号"+henlu.number+",henlu求和结果"+henlu.f(100));
       }
    }

    接口的理解

       假如轿车、卡车、拖拉机、摩托车和客车都是机动车的子类,其中机动车是一个抽象类。机动车中有诸如“刹车”、“转向”等方法是合理的,即要求轿车、卡车、拖拉机、摩托车和客车都必须具体实现“刹车”、“转向”等功能。但是机动车类包含有两个抽象类方法“收取费用”、“调节温度”,那么所有子类都要重写这两个方法,即给出方法体,产生各自的的收费获取控制温度的行为。这显然不符合人们的思维逻辑,因为拖拉机可能不需要“”收取费用”、“调节温度”的功能,而其他一些类,如飞机、轮船等可能也需要具体实现“收取费用”、“调节温度”。

       接口的思想在于它要求某些类有相同的方法,但方法的具体内容(方法体的内容)可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法(即所谓的方法绑定)。

    Example6_2.java

    abstract class MotorVehicles {
       abstract void brake();
    }
    interface MoneyFare {
       void  charge();
    }
    interface ControlTemperature {
       void controlAirTemperature();
    }
    class Bus extends MotorVehicles implements MoneyFare {
        void brake() {
            System.out.println("公共汽车使用毂式刹车技术");
        }
        public  void charge() {
            System.out.println("公共汽车:一元/张,不计算公里数");
        }
    } 
    class Taxi extends MotorVehicles implements MoneyFare,ControlTemperature {
        void brake() {
            System.out.println("出租车使用盘式刹车技术");
        }
        public  void charge() {
            System.out.println("出租车:2元/公里,起价3公里");
        }
        public void  controlAirTemperature() { 
            System.out.println("出租车安装了Hair空调");
        }
    
    }
    class Cinema implements MoneyFare,ControlTemperature {
        public  void charge() {
            System.out.println("电影院:门票,十元/张");
        }
        public void  controlAirTemperature() { 
           System.out.println("电影院安装了中央空调");
        }
    }
    public class Example6_2 {
       public static void main(String args[]) {
           Bus  bus101 = new Bus();
           Taxi buleTaxi = new Taxi();
           Cinema redStarCinema = new Cinema();
           bus101.brake(); 
           bus101.charge();
           buleTaxi.brake();
           buleTaxi.charge();
           buleTaxi.controlAirTemperature();
           redStarCinema.charge();
           redStarCinema.controlAirTemperature();
       }
    }

    个人理解:一些公共类方法大家都要用到的就继承,一些特殊的就定义一个接口来实现。

    class Taxi extends MotorVehicles implements MoneyFare,ControlTemperatur
  • 相关阅读:
    计划任务和压缩归档
    libevent 源码学习三 —— 基本使用场景和事件流程
    libevent 源码学习二 —— reactor 模式
    libevent 库源码学习
    手动配置固定IP参数vim vim
    软件相关
    写xhttpd服务器时 遇到segmentation fault
    c与c++中输出字符指针和字符串指针的问题
    char * argv[] ,string简析
    传入参数与传出参数
  • 原文地址:https://www.cnblogs.com/yihujiu/p/5990689.html
Copyright © 2020-2023  润新知