HOLLY老师KD07班级教学展示

JavaOOP (四) 接口_java

KD07高薪三连想

JavaOOP (四) 接口_get方法_02放开想JavaOOP (四) 接口_get方法_02不设限JavaOOP (四) 接口_get方法_02什么?10k高薪都嫌少?JavaOOP (四) 接口_抽象类_05JavaOOP (四) 接口_多态_06

各位小伙伴们大家好:

     开讲之前还是要提一下"口碑"的事!没办法,领导施加压力,天天催口碑的事,要完成部门任务,我也没办法!!Holly也想好好静下心研究技术和大家一起分享,但是“口碑任务“完不成,就没法静心搞技术!我每天上10节课,早8:30到晚8:30,下班了,在写微信公众号,整理知识点!有点小辛苦,有点累,但是还是要每天坚持做自己该做的事!教学要做,个人提升要做,团队任务也要完善,毕竟在一个团队了,每个人不能做的事情都是自己喜欢做的,但是这也是我的工作内容的一部分,也需要完成!所以各位小伙伴们,如果你身边有想学java的,UI设计,WEB前端,大数据,.net,记得联系holly老师!

 

    此致   敬礼

    可爱的Holly老师

    2017.12.23

 

ddd

JavaOOP (四) 接口_get方法_07JavaOOP (四)  接口JavaOOP (四) 接口_ide_08

JavaOOP (四) 接口_ide_09

(一) 、知识点梳理

DDD

JavaOOP (四) 接口_抽象类_10

 

ddd的、

1.接口和抽象类的区别

(1)语法不同

(2)接口不能实例化

(3)接口可以继承接口,但是接口不能继承类

(4)接口中只能存在公共的静态常量和公共的抽象的方法

(5)如果某个类要实现接口,则要实现接口中所有的抽象方法,除非子类也是抽象类

(6)抽象类也不能实例化

(7)抽象类也可以继承抽象类,但是抽象类可以继承类

(8)抽象类中可以有普通类有的所有内容,还可以有抽象方法

(9)如果某个类要继承抽象类,则要实现抽象类中所有的抽象方法,除非子类也是抽象类

 

2.定义接口的语法

public interface 接口名称{ }

 

3.接口这里用到了几个设计原则

(1)接口隔离原则

(2)单一职能原则

 

4.如何使用多态实现接口的内容

(1)接口类型 对象名=new 实现类类型(参数列表);

(2)该对象只能调用实现类重写的接口的方法

 

5.接口表示什么?

(1)接口表示一种能力

(2)接口表示一种约定

 

6.接口有比抽象类更好的特性:

(1)可以被多继承

(2)设计和实现完全分离

(3)更自然的使用多态

(4)更容易搭建程序框架

(5)更容易更换实现

 

dd

JavaOOP (四) 接口_ide_09

二、案例1:Holly解说接口的由来

DDD

JavaOOP (四) 接口_get方法_12

 

dddd

1.假设Pet是抽象类.        

2.因为抽象类不能new,所以不能有有参数的构造    

3.因为有参数的构造,作用是完成私有属性的初始化操作

4.因为做封装, 所以在构造方法中调用普通的public的

setget方法,                                      

 ↓                 

 但是不能new,所以不能有有参数的构造,所以不能有set和get方法                                         ↓            

因为set和get方法时普通的方法,所以不应该有普通方法                                      

 ↓                    

因为不能new,所以不能通过对象名.方法名去调用普通方法,所以不应该有普通方法    

 ↓                  

在封装的时候,普通get和set方法,是完成私有属性的合法赋值操作操作的                               

 ↓  

因为不能有普通的set和get方法,所以不应该有私有的属性                                      

 ↓                  

 只能有公共的静态常量和抽象的方法       

 ↓                 

 起名叫做接口  Interface              

 ↓               

 可以省略public static final  

 可以省略 public abstract  

----------------------------------------------

代码如下:

package com.part1;

/**

 * 抽象类: 出现的目的:不能new

 */

public interface Pet {

 /* private int health; */

 public static final String EYES = "2只";

 static final String EYES2 = "2只";

 final String EYES3 = "2只";

 

 // ☆如下是我们常写的

 String EYES4 = "2只";

 

 public abstract void say();

 

 abstract void say1();

 

 // ☆如下是我们常写的

 void say2();

 /*

  * public Pet() { } public Pet(int health) { this.setHealth(health); }

  * public int getHealth() { return health; } public void setHealth(int

  * health) { if(health>0 || health<=100){ this.health = health; }else{

  * System.out.println("非法赋值"); } }

  */

}

 

DDDD

JavaOOP (四) 接口_ide_09

三、案例2:接口表示一种能力

DDD

JavaOOP (四) 接口_抽象类_10

 

DDDD

ddd的、

1.先定义USB接口,usb接口本身不具有任何功能,它的能力由外界设备所决定

package com.part2;

/**

 * USB接口

 */

public interface Usb {

 /*

  * 服务

   */

  void service();

}

 

2. 定义usb的外接设备优盘UDisk.java类,

package com.part2;

/**

 * U盘

 * 此类叫做接口的实现类

 * 

 */

public class UDisk implements Usb {

 @Override

 public void service() {

  System.out.println("U盘传输数据");

 }

}

 

3. 定义usb的外接设备优盘UFan.java类,

package com.part2;

/**

 * USB风扇

 * @author Administrator

 */

public class UFan implements Usb {

 @Override

 public void service() {

   System.out.println("提供电流,开始吹风...");

 }

}

 

4.定义测试类Test.java测试功能

package com.part2;

public class Test {

 public static void main(String[] args) {

  //接口的类型,实现类的对象

  Usb disk=new UDisk();

  disk.service();

 

  Usb fan=new UFan();

  fan.service();

 }

}

 

运行结果如下:

U盘传输数据

提供电流,开始吹风...

 

 

 

JavaOOP (四) 接口_ide_09

四、案例3:解决java中单根继承问题

 

 

DD

 

 

JavaOOP (四) 接口_抽象类_10

 

DDD

题目:实现防盗门防盗功能,防盗门是门,门可以开和关,防盗门有上锁开锁和门铃等功能。

1.定义防盗门Door.java抽象类

package com.part3;

/**

 * 1.门的抽象类

 * @author Administrator

 *

 */

public abstract class Door {

  /**

   * 开门

   */

  public abstract void open();

  /**

   * 关门

   */

  public abstract void close();

}

 

2.定义门铃接口DoorBell.java类

package com.part3;

/**

 * 门铃

 * @author Administrator

 */

public interface DoorBell {

 /**拍照*/

 void tackPhoto();

}

 

3.定义锁的接口Lock.java类

package com.part3;

/**

 * 锁的接口

 * @author Administrator

 */

public interface Lock {

 /**

  * 上锁

  */

 void lockUp();

 /**

  * 开锁

  */

 void openLock();

}

 

4.定义防盗门TheftproofDoor.java类实现防盗功能

package com.part3;

/**

 * 防盗门实现防盗功能

 * @author Administrator

 */

public class TheftproofDoor extends Door implements Lock,DoorBell {

 /**关门*/

 public void close() {

  System.out.println("拉门,门关上了");

 }

 /**开门*/

 public void open() {

  System.out.println("推门,门开了");

 }

 /**上锁*/

 public void lockUp() {

  System.out.println("插入钥匙,右转三圈,上锁");

 }

 /**开锁*/

 public void openLock() {

  System.out.println("插入钥匙,左转三圈,开锁");

 }

 /**门铃*/

 public void tackPhoto() {

  System.out.println("玲..........拍照......");

 }

}

 

5.定义测试类Test.java测试防盗功能:

package com.part3;

public class Test {

 public static void main(String[] args) {

  TheftproofDoor theDoor=new TheftproofDoor();

  theDoor.close(); //关门

  theDoor.lockUp(); //上锁

  theDoor.tackPhoto();//门铃

  theDoor.openLock(); //开锁

  theDoor.open(); //开门

 }

}

 

运行结果如下:

拉门,门关上了

插入钥匙,右转三圈,上锁

玲..........拍照......

插入钥匙,左转三圈,开锁

推门,门开了

 

 

 

JavaOOP (四) 接口_ide_09

五、案例4:接口表示一种约定

 

 

DDD

JavaOOP (四) 接口_抽象类_10

 

 

DDD

ddd的、

题目:打印机实现打印功能,需要有墨盒和纸张的接口

墨盒以后黑白和彩色两种墨盒

1. 定义纸张接口Paper.java

package com.part4;

/**

 * 纸张接口

 */

public interface Paper {

  /**

  * 获取纸张大小

  * @return

  */

  String getSize();

}

 

2.纸张接口的具体实现类A4纸张

package com.part4;

/**

 * 纸张接口的具体实现类A4纸张

 * @author Administrator

 */

public class A4Paper implements Paper {

 /**

  * 获取纸张大小

  */

 @Override

 public String getSize() {

  return "A4";

 }

}

 

3.纸张接口的具体实现类B5纸张

package com.part4;

/**

 * 纸张接口的具体实现类B5纸张

 * @author Administrator

 */

public class B5Paper implements Paper {

  /**

  * 获取纸张大小

  */

  @Override

  public String getSize() {

  return "B5";

  }

}

 

4.墨盒接口

package com.part4;

/**

 * 墨盒接口

 */

public interface Ink {

 /**

  * 获取颜色

  * @return

  */

 String getColor();

}

 

5.墨盒接口的具体实现类彩色墨盒

package com.part4;

/**

 * 墨盒接口的具体实现类彩色墨盒

 * @author Administrator

 */

public class ColorInk implements Ink {

 @Override

 public String getColor() {

  return "彩色";

 }

}

 

 

6.墨盒接口的具体实现类黑白墨盒

package com.part4;

/**

 * 墨盒接口的具体实现类黑白墨盒

 * @author Administrator

 */

public class GrayInk implements Ink {

 @Override

 public String getColor() {

  return "黑色";

 }

}

 

7.打印机组装

 

package com.part4;

/**

 * 打印机组装

 */

public class Printer {

  /**

   * 纸张

   */

  private Paper paper;

  /**

   * 墨盒

   */

  private Ink ink;

  

  public Printer() {

  }

  public Printer(Paper paper, Ink ink) {

  this.paper = paper;

  this.ink = ink;

  }

  /**

   * 打印机打印的方法

   */

  public void print(){

  System.out.println("使用"+this.getInk().getColor()

  +"墨盒在"+this.getPaper().getSize()+"纸张上打印");

  }

  public Paper getPaper() {

  return paper;

  }

  /**

   * 父类作为方法形参实现多态

   * @param paper

   */

  public void setPaper(Paper paper) {

  this.paper = paper;

  }

  public Ink getInk() {

  return ink;

  }

  /**

   * 父类作为方法形参实现多态

   * @param ink

   */

  public void setInk(Ink ink) {

  this.ink = ink;

  }

}

 

8.测试类测试

 

package com.part4;

public class Test {

  public static void main(String[] args) {

  //父类引用子类对象

  Paper A4=new A4Paper();

  Ink gray=new GrayInk();

  Paper B5=new B5Paper();

  Ink color=new ColorInk();

 

  //1.使用黑色墨盒在A4纸张打印

  Printer p=new Printer(A4, gray);

  p.print();

 

  //2.使用黑色墨盒在B5纸张打印

  p=new Printer(B5, gray);

  p.print();

 

  //3.使用彩色墨盒在A4纸张打印

 

  //4.使用彩色墨盒在B5纸张打印

  }

}

 

 

运行结果如下:

使用黑色墨盒在A4纸张上打印

使用黑色墨盒在B5纸张上打印

 

JavaOOP (四) 接口_get方法_19

 

有问题或更好建议可以联系holly老师,让我们共同学习:

QQ/微信:964918306

每周会不定期的进行: 斗鱼直播讲堂(房间号672217)

直播时间会在前一天的微信公众号通知!

希望大家天天关注微信公众号哦!

博客园: 红酒人生(有大量技术帖子)

想高薪就业 就学习java,安卓,大数据,数据库,web开发,前端开发 ,可以来" 北大青鸟南京中博软件学院" 找 Holly老师 哦!!!Holly老师欢迎您来咨询!

长按下方二维码关注Holly老师公众号,一起学java吧!

 

JavaOOP (四) 接口_ide_20JavaOOP (四) 接口_get方法_21

JavaOOP (四) 接口_ide_22长按识别二维码

北大青鸟

南京中博软件学院

 

JavaOOP (四) 接口_java_23