zoukankan      html  css  js  c++  java
  • 多态接口

    多态接口思维导图

    接口的定义

    使用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

     

  • 相关阅读:
    Docker系列——InfluxDB+Grafana+Jmeter性能监控平台搭建(一)
    Centos7网络配置——设置固定ip
    Fiddler扩展——自定义列数据&Tunnel to 443解决办法
    Jmeter二次开发——自定义函数
    net5学习笔记---依赖注入
    Spring Cloud Alibaba系列之分布式服务组件Dubbo
    Spring5.0源码学习系列之事务管理概述
    C# 无需管理员权限提示,操作C盘文件
    WPF 屏幕点击的设备类型
    WPF Button MouseDown事件
  • 原文地址:https://www.cnblogs.com/cycanfly/p/5263328.html
Copyright © 2011-2022 走看看