文章目录

  • 接口,多态
    • 1. 接口
      • 1.1 生活中的接口
      • 1.2 接口格式
      • 1.3 接口的特殊用法
        • 1.3.1 多接口遵从
        • 1.3.2 继承+遵从
        • 1.3.3 default关键字
    • 2. 生活实际问题分析[案例代码三遍]
      • 2.1 动物类和各种动物
      • 2.2. USB接口和USB设备
      • 2.3 多态记住两句话
    • 3. 多类合作
      • 3.1 组装电脑
    • 3. 多类合作
      • 3.1 组装电脑

接口,多态

1. 接口

1.1 生活中的接口
生活中接口USB Type-C RJ45 雷电协议口(USB-C) 3.5MM HDMI 国标插座 VGA DP 这些接口有什么作用???USB接口为例充电,U盘,移动硬盘,麦克风,网卡,声卡,键盘,鼠标给予当前电脑其他的拓展功能当前连接的所有设备,都需要符合USB接口协议固定内容:尺寸,接触引脚个数不固定通过USB接口完成的拓宽内容。USB接口制定连接操作过程,同时要求USB设备完成对应规范。【驱动安装】【插件式编程方式】
1.2 接口格式
关键字:interface 接口 UI User Interface implements 【遵从】格式:定义接口格式interface A {成员变量成员方法}遵从接口:class B implements A {}
interface A {/* * 成员变量* The blank final field num may not have been initialized* final修饰的成员变量num可能尚未初始化* * 在Eclipse --> Outline 发现当前变量有 SF 修饰 S ==> static F ==> final* 并没有【显式】使用public static final修饰。* 接口语法中有规定,成员变量【缺省属性】 public static final*/int num = 10;/** 成员方法* Abstract methods do not specify a body* abstract修饰的方法不配有方法体* * 接口语法规定,成员方法【缺省属性】public abstract*/void test();
}
/** 定义一个类【遵从 implements】接口* The type TypeA must implement the inherited abstract method A.test()* TypeA类必须实现通过[继承关系]得到的abstract修饰方法 A接口中的test*/
class TypeA implements A {@Overridepublic void test() {System.out.println("TypeA类遵从接口A实现test方法");}
}public class Demo1 {public static void main(String[] args) {TypeA typeA = new TypeA();typeA.test();// 匿名对象new TypeA().test();}}
1.3 接口的特殊用法
1.3.1 多接口遵从
package com.qfedu.a_interface;interface B {void testB();
}interface C {void testC();
}/** TypeB类遵从多个接口,多个接口使用 逗号 , 隔开用户是*/
class TypeB implements B, C {@Overridepublic void testC() {System.out.println("遵从接口C完成的testC方法");}@Overridepublic void testB() {System.out.println("遵从接口B完成的testB方法");}}public class Demo2 {public static void main(String[] args) {// 匿名对象直接调用方法,有new就有堆区内存,同时有new就会有对应的新对象new TypeB().testB();new TypeB().testC();}
}
1.3.2 继承+遵从
package com.qfedu.a_interface;interface D {void testD();
}class Father {public void game() {System.out.println("黄金矿工!!!");}
}/** Son类是Father类的一个子类,同时也是D接口的实现类* * Java是一门单继承语言,允许多接口遵从*/
class Son extends Father implements D {@Overridepublic void testD() {System.out.println("遵从接口D实现的testD方法");}}public class Demo3 {public static void main(String[] args) {// 子类可以使用父类中的继承而来的方法new Son().game();// Son类是接口D的实现类对象,可以使用testD方法new Son().testD();}
}
1.3.3 default关键字
package com.qfedu.a_interface;/** default关键字是 JDK 1.8 新特征* * default在接口中修饰方法,为默认方法,非必要强制实现方法。* default关键字修饰的方法,允许有方法体*/
interface E {void test();default public void testDefault() {System.out.println("默认方法");}
}class TypeC implements E {/** TypeC类强制要求完成【缺省属性】为public abstract的test方法* * 不强制重写 testDefault方法*/@Overridepublic void test() {System.out.println("遵从接口E实现的test方法");}}public class Demo4 {public static void main(String[] args) {new TypeC().test();new TypeC().testDefault();}
}

2. 生活实际问题分析[案例代码三遍]

2.1 动物类和各种动物
动物可以看做是一个类
老虎,狮子,熊猫可以各自看做是一个类
老虎,狮子,熊猫 ==> 是不是动物??? 是
package com.qfedu.b;/** 动物类*/
class Animal {}/** 老虎类,同时也是动物类子类*/
class Tiger extends Animal {}/** 狮子类,同样是动物类的子类*/
class Lion extends Animal {}/** 熊猫类,也是动物类的子类*/
class Panda extends Animal {}public class Demo1 {public static void main(String[] args) {Animal animal = new Animal();Tiger tiger = new Tiger();Lion lion = new Lion();Panda panda = new Panda();/** feedAnimal方法需要的参数是Animal类对象* 这里可以传入Animal类对象,以及Animal类对象的子类对象。*/feedAnimal(animal);feedAnimal(panda);feedAnimal(lion);feedAnimal(tiger);/** 目前情况下是使用一个Animal引用数据类型变量指向一个Panda对象*/Animal animal2 = getAnimal();/** 引用数据类型的强制类型转换。大数据类型转小数据类型* Animal是大数据类型,赋值给小数据类型Panda引用数据类型变量操作* 需要使用强制类型转换。*/Panda panda2 = (Panda) animal2;}/*** 喂食动物的方法,需要的参数是一个Animal类对象* * @param animal Animal类对象*/public static void feedAnimal(Animal animal) {// animal.getClass().getName()  获取类名System.out.println(animal.getClass().getName() + "来吃饭了~~~");}/*** 获取一个Animal类对象* * @return Animal类对象*/public static Animal getAnimal() {/** 要求当前方法返回值数据类型是Animal类型,这里返回Animal类对象或者* Animal的子类对象都是符合要求的。*/// return new Animal();return new Panda();// return new Tiger();// return new Lion();}
}
2.2. USB接口和USB设备
USB接口 ==> interface 规定当前USB设备需要完成的方法是什么。USB设备 ==> 键盘 鼠标 遵从USB接口电脑通过USB接口连接USB设备 ==> 方法
package com.qfedu.b;interface USB {/*** 要求所有的USB设备必须完成connect方法,连接方法* 完成自己的功能*/void connect();
}/*** 键盘类,同时也是USB设备,遵从USB接口* * @author Anonymous*/
class Keyboard implements USB {@Overridepublic void connect() {System.out.println("键盘连接电脑...");}
}/*** Filco类是Keyboard 键盘类子类,同时也是USB设备,间接遵从USB接口* @author Anonymous**/
class Filco extends Keyboard {@Overridepublic void connect() {System.out.println("Filco 茶轴");}
}/*** 鼠标类,同时也是USB设备,遵从USB接口* * @author 期年之前ying@*/
class Mouse implements USB {@Overridepublic void connect() {System.out.println("鼠标连接电脑...");}
}/*** LogiG502 是 Mouse 鼠标类的子类,也是一个USB设备,间接遵从USB接口* * @author Anonymous**/
class LogiG502 extends Mouse {@Overridepublic void connect() {System.out.println("Logi G502 游戏鼠标,非常nice");}
}class Computer {/*** 电脑类使用usb接口的方法,需要的参数是USB接口* * @param usb*/public void useUsbInterface(USB usb) {// 使用接口的connect方法。usb.connect();}
}public class Demo2 {public static void main(String[] args) {// 创建鼠标类对象和键盘类对象Mouse mouse = new Mouse();Keyboard keyboard = new Keyboard();// 创建一个电脑类对象Computer computer = new Computer();// 通过USB接口连接USB设备 ==> 鼠标computer.useUsbInterface(mouse);// 通过USB接口连接USB设备 ==> 键盘computer.useUsbInterface(keyboard);// Filco类匿名类对象,作为方法参数computer.useUsbInterface(new Filco());computer.useUsbInterface(new LogiG502());}
}
2.3 多态记住两句话
父类的引用指向子类的对象
接口的引用指向遵从接口的类对象这就是多态多态的作用:1. 拓宽方法的参数范围例如:方法参数是Animal类,这里可以传入Animal类对象,Tiger类对象,Lion类对象...方法参数是USB接口,可以传入Mouse类对象,Keyboard类对象。2. 拓宽方法的返回值范围例如:方法返回值类型是Animal类型,这里可以返回的数据Tiger类对象,Panda类对象...慢慢揣摩【编译看左,运行看右】

3. 多类合作

3.1 组装电脑
键盘是一个类属性:品牌 按键个数成员方法就是Setter和Getter方法屏幕是一个类属性:品牌,尺寸成员方法就是Setter和Getter方法电脑是一个类成员变量:键盘和屏幕是电脑的成员变量。【包含关系】成员方法:换键盘 setter 方法换屏幕 setter 方法展示电脑的配置
数范围例如:方法参数是Animal类,这里可以传入Animal类对象,Tiger类对象,Lion类对象...方法参数是USB接口,可以传入Mouse类对象,Keyboard类对象。2. 拓宽方法的返回值范围例如:方法返回值类型是Animal类型,这里可以返回的数据Tiger类对象,Panda类对象...慢慢揣摩【编译看左,运行看右】

3. 多类合作

3.1 组装电脑
键盘是一个类属性:品牌 按键个数成员方法就是Setter和Getter方法屏幕是一个类属性:品牌,尺寸成员方法就是Setter和Getter方法电脑是一个类成员变量:键盘和屏幕是电脑的成员变量。【包含关系】成员方法:换键盘 setter 方法换屏幕 setter 方法展示电脑的配置
``

Java 接口,多态相关推荐

  1. java接口多态的变量能_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...

    Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口. 硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接 ...

  2. Java接口,多态,向上转型,向下转型的意义

    接口 官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现 ,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 包含 ...

  3. java 接口 多态 异常

    48.在使用interface声明一个接口时,只可以使用( )修饰符修饰该接口 Public 49.下面哪些是short型的取值范围() −215 ~ 215-1 50.关于异常(Exception) ...

  4. java借口不同程序_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...

    Java面向对象之接口--interface 什么是接口 一般计算机中的接口分为硬件接口和软件接口.硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议. 软件接口 ...

  5. Java接口与类之间继承,多态的练习,文字游戏,

    Java接口与类之间继承,多态的练习例题,文字游戏, 问题描述: 一.定义两个接口: public interface Assaultable可攻击的, 接口有一个抽象方法public abstrac ...

  6. java接口和多态应用例题_Java基础进阶 第四天 抽象接口多态

    今日任务: 1,能够独立使用抽象类 2,能够独立使用多态 3,能够独立使用接口 4,能够理解适配器设计模式 1. 抽象类 1.1. 抽象类的产生 需求:创建类描述猫和狗的行为: 猫的行为:抓老鼠:吃鱼 ...

  7. Java基础---多态、抽象类、接口

    2015-4-4 一.多态 1.定义:某一个事物,在不同时刻表现出来的不同状态. 2.多态的前提与体现: (1)要有继承关系: (2)要进行方法的重写: (3)要父类引用指向子类对象. 3.成员访问特 ...

  8. Java中多态、抽象类和接口

    1.final关键字是最终的意思,可以修饰类.方法和变量. final修饰类不能被继承.修饰方法不能被重写.修饰变量是常量 例如: final class Father{}//final修饰类将不能被 ...

  9. java接口深入理解,深入理解Java接口

    从java接口是什么到为什么,理解java接口,主要解决三个问题 1.java接口是什么 2.java接口为什么 3.java接口怎么用 java接口是什么 接口是方法的抽象,通过接口规定类需要实现那 ...

  10. 深入Java核心 Java中多态的实现机制(1)

    在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...

最新文章

  1. python Anaconda2安装OpenCV2
  2. 3_3 ObserverMode 观察者模式
  3. Linux 中yum的配置
  4. Java IO: RandomAccessFile
  5. Django 2.0 学习(20):Django 中间件详解
  6. C++可重载运算符和不可重载运算符
  7. MT4 缠论双线MACD面积背离指标
  8. 电子游戏销售数据分析
  9. 汽车CAN总线-基础
  10. 【牛客网刷题系列 之 Verilog快速入门】~ 异步复位的串联T触发器、奇偶校验
  11. 科学计算机中的dms在哪,计算机视觉方向简介 | 驾驶员监控DMS
  12. Exp9 Web安全基础 20164302 王一帆
  13. 第一次软工作业(构建之法)
  14. 中新时评:中国经济亮红灯 宏观调控“下猛药
  15. 書劍恩仇錄 (無線電視翡翠台版本) - 劇本終回由誰人敲定? 就是李添勝.
  16. day36 cookiessession
  17. mysql: [Warning] Using a password on the command line interface can be insecure.解决方法
  18. 快手招聘计算机视觉实习生
  19. 运营大数据具体做什么的?有哪些价值提现?
  20. python for循环*号等腰三角形_for循环实现正等腰三角形

热门文章

  1. python界面实现点餐系统_餐厅点餐系统详细设计与系统实现
  2. 四叉树 gis java_GIS中四叉树索引及其分类介绍 | 麻辣GIS
  3. tdscdma手机linux,全方位介绍——TD-SCDMA无线技术(1)
  4. 2021-2027中国游戏开发工具市场现状及未来发展趋势
  5. WEB安全基础 - - -弱口令和暴力破解
  6. 公制螺纹与英制螺纹区别
  7. pcduino_arm_rtl8187L 驱动安装编译过程
  8. 基于单片机智能电子密码锁设计(毕业设计资料)
  9. 2021最新H3CSE认证备考练习题,错过等明年!
  10. grub4dos初级教程