Java面向对象:接口 (防盗门练习)

什么是接口

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念;类描述对象的属性和方法,接口则包含类要实现的方法;除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口的声明

声明接口的语法:

package abs;
//	interface:接口
public interface Lock {
//	开锁、上锁
	public abstract void lockup();
	void lockdown();	//	public abstract:可以省略
	public default void su(){
		System.out.println("hello");
	}
	
//	接口-特殊的类(抽象类)
//	是一种规范,一种能力,里面所有的方法都是抽象方法
//	jdk1.8开始允许出现一般方法,但要加default	
}

使用接口

使用接口的步骤:

1、创建接口,声明方法

2、创建类,实现接口,实现接口中的方法

3、使用实现后的方法执行具体的操作

接口的特点

1、接口不能用于实例化对象,因为接口中的方法都是抽象的 – 特殊的抽象类

2、接口不能存在构造方法,不存在抽象构造方法,没有什么用

3、接口中所有的方法必须是抽象方法。默认为:public abstract

4、接口不能包含成员变量,除了 public static final 常量。

5、接口中允许出现静态方法,接口名字调用即可,静态方法是常量

6、接口和类之间不是继承关系,而是实现的关系。实现使用关键字:implements

7、接口可以存在继承关系,但是接口只能继承接口,继承只能用于同类型之间,如类和类,接口和接口,接口可以同时继承多个接口

8、一个类可以同时实现多个接口

9、一个类可以继承一个类的同时实现多个接口

接口和抽象类的区别?

1、抽象类使用关键字abstract class修饰,接口使用关键字interface;

2、抽象类使用关键字extends实现继承,接口使用implements来实现

3、抽象类中可以包含抽象方法和普通方法,接口中只能有抽象方法;1.8之后是允许有一般方法的

4、抽象类可以有构造方法,接口中不能有构造方法;

5、抽象类可以有成员变量,接口中只能有常量;

6、抽象类只能单继承,接口可以多继承;

7、抽象类里面的方法可以是public,protect,private,接口的方法只能是public;

面向接口编程
实现防盗门的功能:
1.防盗门是一个门
2.防盗门有一个锁

测试

package abs;
//	测试
public class Demol {
	public static void main(String[] args) {
		
		TheftproofDoor door = new TheftproofDoor();
		door.closeDoor();
		door.openDoor();
		door.lockdown();
		door.lockup();
		
//		效果:
//		向后拉,关门
//		向前推,开门
//		插入钥匙,向右转三圈上锁,拔出钥匙
//		插入钥匙,向左转三圈开锁,拔出钥匙
	}
}

抽象类

package abs;
//abstract:抽象修饰符 
public  abstract class Door {
//	开门、关门的方法
	public abstract  void openDoor();
	public abstract void closeDoor();
	
//	一个方法你不需要方法体的话
//	可以使用abstract关键字来修饰,表示的是抽象的意思
//	abstract修饰的方法是抽象方法,特征是没有方法体
}

接口

package abs;
//	interface:接口
public interface Lock {
//	开锁、上锁
	public abstract void lockup();
	void lockdown();
	public default void su(){
		System.out.println("hello");
	}
	
//	接口-特殊的类(抽象类)
//	是一种规范,一种能力,里面所有的方法都是抽象方法
//	public abstract:可以省略
//	jdk1.8开始允许出现一般方法,但要加default
	
}

定义方法

package abs;
//	防盗门具有Door门和Lock锁的功能
public class TheftproofDoor extends Door implements Lock {

	public void lockup() {
		System.out.println("插入钥匙,向左转三圈开锁,拔出钥匙");	
	}

	public void lockdown() {
		System.out.println("插入钥匙,向右转三圈上锁,拔出钥匙");	
	}

	public void openDoor() {
		System.out.println("向前推,开门");
	}
	
	public void closeDoor() {
		System.out.println("向后拉,关门");
	}
}

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值