• 多态接口


    多态接口思维导图

    接口的定义

    使用interface来定义一个接口。接口定义与类的定义类似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成。定义接口的基本语法格式如下:

    [修饰符]interface接口名[extend  父接口名列表]{

    [public][static][final]变量;

    [public][abstract] 方法;

    }

    定义接口的语法格式的参数说明如表:

    注意:Java的类文件一样,接口文件的文件名必须与接口名相同。

    接口的实现

    在类中实现接口可以使用implements关键字,基本语法格式如下:

    [修饰符]class<类名>[extends  父类名][implements  接口列表]{

    }

    实现接口的语法格式的参数说明如下表:

    在类中实现接口时,方法名、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。

    在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔,这时就可能出现变量或方法名冲突的情况。解决该问题时,如果变量冲突,则需要明确指定变量的接口,可以通过“接口名.变量”实现。如果出现方法冲突,则只要实现一个方法即可。

    package org.hanqi.pn0120;
    
    //属性
    public class Computer {
        
        //品牌
        private String pinpai;
        
        //CPU
        private ICPU cpu;
        
        //显卡
        private IDisplayCard displaycard;
    
        public String getPinpai() {
            return pinpai;
        }
    
        public void setPinpai(String pinpai) {
            this.pinpai = pinpai;
        }
    
        public ICPU getCpu() {
            return cpu;
        }
    
        public void setCpu(ICPU cpu) {
            this.cpu = cpu;
        }
    
        public IDisplayCard getDisplaycard() {
            return displaycard;
        }
    
        public void setDisplaycard(IDisplayCard displaycard) {
            this.displaycard = displaycard;
        }
        
        
        
        //运行
        public void run()
        {    
            //cpu
            this.cpu.command();
            //显卡
            this.displaycard.display();
            
            System.out.println("我组装的"+pinpai+"电脑开始运行");
        }
        
        
    
        public Computer(String pinpai) {
            super();
            this.pinpai = pinpai;
        }
        public static void main(String[] args)
        {
            
            //组装电脑
            Computer c1=new Computer("hp");
            
            //第一种方式 有名字
            AMD a1=new AMD();
            
            //第二种方式 匿名类new AMD()
            c1.setCpu(a1);
            
            c1.setDisplaycard(new Ati());
            
            c1.run();
            
            
            Computer c2=new Computer("华硕");
            
            c2.setCpu(new Intel());
            c2.setDisplaycard(new Nivdia());
            
            c2.run();
            
            
            //
            AMD2 a2=new AMD2();
            
            Computer c3=new Computer("acer");
            
            c3.setCpu(a2);
            c3.setDisplaycard(a2);
            
            c3.run();
            
            System.out.println();
            
            AMD3 a3=new AMD3();
            
            Computer c4=new Computer("acer");
            
            c4.setCpu(a3);
            c4.setDisplaycard(a3);
            
            c4.run();
            
        }
    
    }
    Computer
    package org.hanqi.pn0120;
    
    //cpu的接口
    public interface ICPU {
        
        //控制
        public void command();
    
    }
    ICPU
    package org.hanqi.pn0120;
    
    public interface IDisplayCard {
        
        //显示
        public void display();
    
    }
    IDisplayCard
    package org.hanqi.pn0120;
    
    public class Intel implements ICPU {
    
        @Override
        public void command() {
            
            System.out.println("我是Intel的CPU");
    
        }
    
    }
    Intel
    package org.hanqi.pn0120;
    
    public class AMD implements ICPU {
    
        @Override
        public void command() {
            
            System.out.println("我是AMD的CPU");
    
        }
    
    }
    AMD
    package org.hanqi.pn0120;
    
    public class AMD2 implements ICPU, IDisplayCard {
    
        @Override
        public void display() {
            
            System.out.println("AMD的CPU显卡");
    
        }
    
        @Override
        public void command() {
            
            System.out.println("AMD的自带显卡的CPU");
    
        }
    
    }
    AMD2
    package org.hanqi.pn0120;
    
    public class AMD3 extends AMD implements IDisplayCard {
    
        @Override
        public void display() {
            
            
            System.out.println("继承了AMD的一代CPU,增加了显卡功能");
    
        }
    
    }
    AMD3
    package org.hanqi.pn0120;
    
    public class Ati implements IDisplayCard {
    
        @Override
        public void display() {
            
            System.out.println("我是A卡");
    
        }
    
    }
    Ati
    package org.hanqi.pn0120;
    
    public interface ICPU2 extends ICPU,IDisplayCard {
        
        public void display();
    
    }
    ICPU2
    package org.hanqi.pn0120;
    
    public class Intel2 implements ICPU2 {
    
        @Override
        public void command() {
            
    
        }
    
        @Override
        public void display() {
            
    
        }
    
    }
    Intel2
    package org.hanqi.pn0120;
    
    public class Nivdia implements IDisplayCard {
    
        @Override
        public void display() {
            
            System.out.println("我是N卡");
    
        }
    
    }
    Nivdia
    package org.hanqi.pn0120;
    
    public interface IJieKou {
        
        //
        public void fangfa1();
        
        public int fangfa2();
        
        public String fangfa3(int i);
        
        public void fangfa4(int w);
    
    }
    IJieKou

     

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/cycanfly/p/5263328.html
Copyright © 2020-2023  润新知