zoukankan      html  css  js  c++  java
  • 什么时候用接口?什么时候用抽象类?

     

    什么时候用抽象类?
    如果两个类有共同的方法,但是方法的具体实现又不一样,我们可以把该方法提取出来放在父类里,给父类加上abstract关键字,把父类定义为抽象类。

    例如:程序员工作,项目经理也工作,但是程序工作具体内容是写代码,项目经理工作具体内容是管理项目,所以此时可以把工作定义为一个方法提取出来放在抽象类里,
    让程序员继承工作方法去写代码,让项目经理也继承工作方法去管理项目。

    代码实现:

    /**
     *员工类.
    */
    public abstract class Employee {
        private  String name;
        private int id;
        private  double salary;
       此处省略set/get方法    
        public abstract void work();
    }
    
    /**
     * 程序员类.
     */
    public class Programmer  extends Employee{
        @Override
        public void work() {
            System.out.println(getName()+"正在写代码");
        }
    }
    
    /**
     *项目经理类
     */
     
    public class PM  extends  Employee{
    
        private int bouns;//奖金
        @Override
        public void work() {
            System.out.println(getName()+"在管理项目");
        }
    }
    

    什么时候用接口?
    接口只有常量和方法。
    常量用public static final 修饰,方法用public abstact 修饰

    例子:

    /**
     * 飞行类
     */
    public interface InterfaceFly {
        public abstract void fly();
    }
    
    /**
    *鸟类
     */
    public class Bird implements InterfaceFly{
    
        @Override
        public void fly() {
            System.out.println("鸟自由自在的飞");
        }
    }
    
    /**
    *飞机类
     */
    public class airplane implements InterfaceFly{
        @Override
        public void fly() {
            System.out.println("飞机飞到北京去了");
        }
    }
    

    总结:

    抽象类和其子类是是不是的关系。例如:程序员和项目经理都是员工。
    接口和其子类是具不具备、有没有的关系。例如:鸟和飞机都具体飞的特性(鸟和飞机都有飞的特性)

  • 相关阅读:
    【PAT甲级】1128 N Queens Puzzle (20分)
    Codeforces Global Round 7D(马拉车/PAM,回文串)
    【PAT甲级】1127 ZigZagging on a Tree (30分)(已知中序后序蛇形输出层次遍历)
    SDOI2012 体育课
    APIO2018 Circle selection 选圆圈
    [科技] 求数列的前k次方和
    APIO2016 Fireworks
    CTSC2018 暴力写挂
    ZJOI2018 胖
    SDOI2017 数字表格
  • 原文地址:https://www.cnblogs.com/superming/p/12015654.html
Copyright © 2011-2022 走看看