Java基础---接口的使用

接口

接口:是一个特殊的抽象类,规定了接口的使用者和接口的实现者之间的规范
定义:
   interface 接口名 {
       
   }
特点:接口中定义的属性都是公开静态常量(即使不加修饰符,也默认是public static final)
     接口中定义的方法都是公开抽象方法(即使不加修饰符,也默认是public abstract)
     接口中没有构造方法,接口中无法定义成员边来那个,所以不需要构造方法给成员变量进行初始化赋值
     接口不能创建对象,但是可以声明引用     

接口的实现类

语法:
class 类名 implements 接口 {

}
定义实现类,实现接口,类创建对象,对象调用方法
特点:如果这个实现类不想成为一个抽象类,那么必须实现接口中所有的方法(公开抽象方法)
package com.HomeWork;

public class Test {
	public static void main(String[] args) {
		//创建Audi车对象a,调用跑方法
		Audi a = new Audi();
		a.run();
		//创建SmartAudi车对象sa,调用跑,自动泊车,自动驾驶方法
		SmartAudi sa = new SmartAudi();
		sa.run();
	    sa.automaticDrive();
		sa.automaticParking();
		//定义Audi类型的变量 aa 把sa赋值aa,aa只能调用run方法
		Audi aa = sa;
		aa.run();
		//aa向下转型为saa
		SmartAudi saa = (SmartAudi) aa;
		//调用自动泊车和自动驾驶方法
		saa.automaticDrive();
		saa.automaticParking();
		//定义Smart类型的变量s,把sa赋值给s,测试只能调用自动泊车和自动驾驶方法,不能调用run方法
		Smart s = sa;
		s.automaticDrive();
		s.automaticParking();	

	}
}

//父类
class Audi {
     public void run() {
    	 System.out.println("奥迪车在跑");
     }
}

//接口
interface Smart {
	void automaticParking();
	void automaticDrive();
}

//继承+实现类
class SmartAudi extends Audi implements Smart {

	@Override
	public void automaticParking() {
		System.out.println("智能奥迪车在自动泊车");
	}

	@Override
	public void automaticDrive() {
		System.out.println("智能奥迪车在无人驾驶");
	}

}

类与类,类与接口,接口与接口的关系

在java的设计思想中,把主要的角色设置为父类(单继承),次要的角色设置为接口(多实现)
类与类:继承关系(extends),一个类只有一个直接父类,为单继承,可以多级继承。
接口与接口:可以单继承;也多继承,一个接口可以有多个直接的父类接口;也可以多级继承。
类与接口:实现关系(implements),一个类可以实现多个接口
    格式:class 类名 implements 接口1,接口2,接口3...{
         需要重写所有接口中的方法!!!
    }
    类继承一个类,同时实现多个接口的时候,先继承,后实现。
类与接口的区别:
	抽象类:定义物体本身固有的属性和行为
	接口:定义物体通过学习、训练而扩展出来的行为

电脑USB案列

package com.ujiuye.demos;

public class Demo_13 {
//电脑USB案例
	/*定义个电脑(computer)类型,要求有开机(turnOn)关机(turnOff),玩游戏(playGame),
	看小电影(lookMoive),并且能够使用指定的外接设备,键盘keyboard 鼠标mouse
	在测试类中,创建电脑对象,调用开机等功能,并接入外接设备,调用外接设备中的功能,最后关机*/
	public static void main(String[] args) {
		Computer com = new Computer();
		com.turnOn();
//		创建鼠标对象
		Mouse m = new Mouse();
		com.useUSB(m);
//		创建一个键盘录入对象
		Keyboard key = new Keyboard();
		com.useUSB(key);
		com.playGame();
		com.lookMovie();
		com.turnOff();
	}
}

//定义一个电脑类
class Computer {
//	开机方法
	public void turnOn() {
		System.out.println("开机");
	}

//	关机方法
	public void turnOff() {
		System.out.println("关机");
	}

//	玩游戏
	public void playGame() {
		System.out.println("打游戏");
	}

//	看电影
	public void lookMovie() {
		System.out.println("看电影");
	}

//	使用USB将外接设备接入电脑
	public void useUSB(USB u) {
		u.joinUSB();
	}
}

interface USB {
	public void joinUSB();
}

//定义出来鼠标类
class Mouse implements USB {

	@Override
	public void joinUSB() {
		System.out.println("鼠标接入电脑");
	}
}

//定义一个键盘类
class Keyboard implements USB {

	@Override
	public void joinUSB() {
		System.out.println("键盘接入电脑");
	}
}

猜你喜欢

转载自blog.csdn.net/qq_41401295/article/details/106469684