接口

接口:

1.什么是接口?

  还有另外一个关键字,也可以用来定义新的数据类型:interface
  但是,使用interface关键字定义的新数据类型,有一些特殊的要求:
  1.1在这种数据类型中,只能有方法声明,不能有方法实现。
  1.2在这种数据类型中,所声明的成员变量,默认都是public static final的。
  1.3在这种数据类型中,所声明的方法,默认都是public abstract的。

2.怎么定义一个接口?

interface YaoKongQi{
    public void open();

    public void close();

    public void adjustTemp();
}


3.怎么使用一个接口?
  3.1接口是要被类来实现的。所谓接口的实现,实际上就是要实现接口中声明的方法。
  3.2在一个类的方法名后面,使用关键字implements,后跟接口名称,用以指明该类所实现的接口。
  3.3如果一个类实现一个接口,那么它必须实现该接口中所有的方法。
 

4.接口的继承
  接口支持多继承
  类只支持单继承

5.实现多个接口

  一个类可以实现多个接口,这时需要在关键字implements后跟接口名称列表。


interface Singer{
	void singing();
}

interface Singer2{
	void dancing();
}

interface Actor{
	void playing();
}

class Student implements Singer,Actor,Singer2{
	String stuName;

	Student(String stuName){
		this.stuName = stuName;
	}

    @Override
	public void singing(){
		System.out.println("啦啦啦");
	}

	@Override
	public void playing(){
		System.out.println("我演过血滴子");
	}

	void study(){
		System.out.println("good good study, day day up");
	}
}

class Teacher implements Singer{
	String teacherName;

	Teacher(String teacherName){
		this.teacherName = teacherName;
	}

	void teaching(){
		System.out.println("老师");
	}

	@Override
	public void singing(){
		System.out.println("啊啊啊");
	}
}

public class Example04{

	//尽可能采用面向接口的编程,有利于对象之间的解耦合
    static void doSomethingForSinger(Singer singer){
		//.....
	}

	public static void main(String[] args){
		/*
		Student stu = new Student();
		stu.stuName = "李宇春";
		stu.singing();

		Singer singer = new Student();	//向上转型
		singer.singing();

		Actor actor = (Actor)singer;
		actor.playing();
		*/

		//多态
		Singer singer = new Student("李宇春");
		singer.singing();
		if(singer instanceof Student){
			Student stu = (Student)singer;	//向下转型
			stu.study();
		}
		if(singer instanceof Teacher){
			Teacher teacher1 = (Teacher)singer; //向下转型
		}

		singer = new Teacher("刘欢");
		singer.singing();
		Teacher teacher = (Teacher)singer; //向下转型
		teacher.teaching();
	}
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值