当前位置: 首页 > 手游 > 保卫萝卜4

【Java视频教程】day17-内部类

来源:网络 时间:2022-10-03 03:30:17
导读接口需求:分别描述以下三种动物的行为:狗:吃;叫; 猫:吃;叫; 猪:吃;叫; 需求升级:根据后天的训练和学习,猫和狗都学会了表演; 结论:接口就是用来描述不属于一个继承体系中的共有属性和行为的; 接口…

接口

需求:分别描述以下三种动物的行为:

狗:吃;叫;

猫:吃;叫;

猪:吃;叫;

需求升级:

根据后天的训练和学习,猫和狗都学会了表演;

结论:接口就是用来描述不属于一个继承体系中的共有属性和行为的;

接口的代码体现:

  • 接口的声明格式

接口不是一个类,所以不能使用class关键字声明,而是使用interface关键字声明;

接口名的命名和类的命名一样:

首字母大写,多个单词,每个单词首字母都要大写;

最好见名知意;

更严格的要求是:所有接口名,都以大写字母I开头;

interface  IPerform{

}
  • 接口中能书写的成员

(注意:从jdk8开始,接口中可以书写默认实现的函数,使用关键字default修饰;)

  • 接口的实现

注意:接口不能创建对象,里面没有构造函数。

结论:接口的实现,需要使用implements关键字;

注意:一个类实现接口,必须实现接口中所有抽象函数;否则,这个类也应该定义为抽象类;

继承一个类同时实现接口

结论:一个类继承其他类,同时实现接口,应该先写类的继承;

使用多态的方式使用接口

  • 接口的多实现&多继承

接口的多实现

接口和类是实现的关系,一个类可以同时实现多个接口,叫做接口的多实现;

如果一个类同时实现多个接口,就要实现每一个接口中的所有抽象函数。否则,这个类也要定义为抽象类。

  • 接口的多继承

接口和接口之间是继承关系,一个接口可以同时继承多个父接口;

注意:

  • 如果一个类实现的多个接口中存在相同名称的成员变量,使用时应该通过接口名调用;
  • 如果一个类同时实现多个接口或者一个接口同时继承多个父接口,这些接口中不允许存在函数名和参数列表都相同,但返回值类型不同的函数;

接口的使用思想

  • 接口的作用总结
接口用来描述不属于一个继承体系的额外的公共的功能;通过多态使用接口,可以提高程序的扩展性;接口实现的java的多继承;接口用来定义规范;
  • 使用接口定义规则
规则:交通规则;校规、班规等等,是必须要被遵守的东西;接口中可以书写的成员:抽象函数和成员变量(被final关键字修饰,也就是常量);Java中实现接口的类,都必须具有接口中定义好的方法,具有接口中规定好的属性值;

需求:使用Java代码模拟电脑使用键盘和鼠标;

传统的实现方式:

//定义类表示电脑

class Computer{
 public void useKeyBoard(KeyBoard kb) {
		kb.start();
		kb.input();
		kb.stop();
	}
	//定义方法,表示电脑使用鼠标
 public void useMouse(Mouse m) {
		m.start();
		m.move();
		m.stop();
	}
}

//定义类表示鼠标

class Mouse{
	//通电开启
 public void start() {
		System.out.println("鼠标启动");
	}
	//断电关闭
 public void stop() {
		System.out.println("鼠标停止");
	}
	//鼠标工作
 public void move() {
		System.out.println("鼠标移动和点击");
	}
}

//定义类表示键盘

class KeyBoard{
	//通电开启
 public void start() {
		System.out.println("键盘启动");
	}
	//断电关闭
 public void stop() {
		System.out.println("键盘停止");
	}
	//键盘工作
 public void input() {
		System.out.println("键盘录入数据");
	}
}
public class Test {
	//需求:使用Java代码模拟电脑使用键盘和鼠标;
 public static void main(String[] args) {
		//创建一个电脑对象
		Computer c = new Computer();
		//创建一个键盘对象
		KeyBoard kb = new KeyBoard();
		//模拟电脑使用键盘
		c.useKeyBoard(kb);
		System.out.println("----模拟电脑使用鼠标-----");
		//创建一个鼠标对象
		Mouse m = new Mouse();
		c.useMouse(m);
	}
}

使用USB接口的方式:

//定义一个USB接口

interface USB{
	//通电开启
 public void start();
	//断电关闭
 public void stop() ;
	//USB设备工作的功能
 public void work() ;
}
class Cam implements USB{

	@Override
 public void start() {
		System.out.println("摄像头通电开启");
	}
	@Override
 public void stop() {
		System.out.println("摄像头断电关闭");
	}
	@Override
 public void work() {
		System.out.println("摄像头拍摄");
	}
}

//定义类表示电脑

class Computer{
 public void useUSB(USB usb) {
		usb.start();
		usb.work();
		usb.stop();
	}
}

//定义类表示鼠标

class Mouse implements USB{
	//通电开启
 public void start() {
		System.out.println("鼠标启动");
	}
	//断电关闭
 public void stop() {
		System.out.println("鼠标停止");
	}
	//鼠标工作
 public void move() {
		System.out.println("鼠标移动和点击");
	}
	@Override
 public void work() {
		move();
	}
}

//定义类表示键盘

class KeyBoard implements USB{
	//通电开启
 public void start() {
		System.out.println("键盘启动");
	}
	//断电关闭
 public void stop() {
		System.out.println("键盘停止");
	}
	//键盘工作
 public void input() {
		System.out.println("键盘录入数据");
	}
	@Override
 public void work() {
		input();
	}
}
public class Test {
	//需求:使用Java代码模拟电脑使用键盘和鼠标;
 public static void main(String[] args) {
		//创建一个电脑对象
		Computer c = new Computer();
		//创建一个键盘对象
		KeyBoard kb = new KeyBoard();
		//模拟电脑使用键盘
		c.useUSB(kb);
		System.out.println("----模拟电脑使用鼠标-----");
		//创建一个鼠标对象
		USB m = new Mouse();
		c.useUSB(m);
		System.out.println("----模拟电脑使用摄像头---");
		//创建一个摄像头对象
		Cam cm = new Cam();
		//调用电脑使用USB外设的方法,使用摄像头
		c.useUSB(cm);
	}
}
  • 接口总结
接口的声明格式:
interface Inter{}

接口中能书写的成员

成员变量:全部都使用public static final 修饰;所以接口中的成员变量都是常量;成员函数:全部都使用 public abstract 修饰;接口中没有构造函数;

接口的细节

接口不能实例化,只能被类实现;实现接口的类必须实现接口的所有方法,否则实现类必须是抽象的;接口与接口是继承的关系,一个接口可以继承多个接口;类和接口是实现的关系,一个类可以实现多个接口;通常开发中使用接口类型的引用指向实现类的对象,这是多态的体现;

接口的作用

描述非继承体系中的共性内容;通过多态使用接口,可以提高程序的扩展性;实现的java的多继承;接口可以定义规则;

接口和抽象类的区别

接口和抽象类的共同点:都可以有抽象函数,都不能实例化;

接口和抽象类的区别

  1. 从声明上:
      1. 抽象类是一个类,需要使用关键字:class声明
      2. 接口不是一个类,使用关键字:interface声明
  2. 从能够书写的成员上看:
      1. 抽象类可以书写类中的所有成员
      2. 接口中只能书写成员变量和抽象函数;

(从JDK8开始,接口中可以有实现的函数,使用关键字default修饰)

  1. 从有无构造函数上看:
      1. 抽象类有构造函数,是给子类实例化对象使用的
      2. 接口没有构造函数
  2. 从作用上看:
      1. 抽象类是描述的继承体系中的共同的特征和行为,如果行为不确定,就定义为抽象函数;
      2. 接口描述的是不属于继承体系的共同的功能;接口可以用来定义规则;
  3. 继承关系上:
      1. 抽象类是一个类,只支持单一继承和多重继承;
      2. 接口和接口可以多继承和多重继承;接口和实现类可以多实现;

接口和抽象类的使用练习

需求:描述手机和电脑,都有开机、关机和可以玩游戏的功能;

练习:将上面的图,转为响应的Java代码;

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:704559159@qq.com

Top
加盟网