java之接口
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法,但是,Java不支持多继承,就有了接口,就可以得到多重继承的效果。 接口是抽象方法和常量值的定义的结合; 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只含有常量和方法的定义,而没有变量和方法的实现; 实现接口类:class SubClass implements interfaceA{} 一个类可以实现多个接口,接口亦可以继承其它接口; 接口的特点:
接口定义举例: public interface Runner{ int ID = 1; void start(); run(); stop(); } 实现接口的类中必须提供接口中的所有方法的具体实现,方可实例化,否则需要声明为抽象类; 接口的主要作用是被实现类实现; 与继承关系类似:接口和实现类中间存在多态性; 当存在继承和实现关系时,先继承后实现; 抽象类在新增抽象方法时存在问题:父类新增抽象方法,子类必须实现该抽象方法,否则子类必须声明为抽象类; 解决方法:新建一个接口,接口中为该抽象方法,让子类去实现; 举个例子:会唱歌的厨师是个好老师。 如果用抽象类来实现:老师--继承--厨师--继承--歌者--继承--人,但是老师、厨师、歌者之间并没有相应的关系; 如果用接口实现:老师--继承--人,然后老师实现厨师接口,老师实现歌者接口; Person.java package inf; abstract class Person { String name; int age; sex; showInfo(); } Cooking.java Cooking { fry(); } Singing.java Singing { singing(); } SCTeacher.java class SCTeacher extends Person implements Cooking,Singing{ String course; setInfo() { super.name = "tom"; super.age = 12super.sex = 1this.course = "数学"; } showInfo() { System.out.println("姓名:"+super.name +"n"+"年龄:"+super.age+"n" +"性别:"+.sex); System.out.println("教的课程是:"+this.course); } fry() { System.out.println("老师的炒菜很好"); } singing() { System.out.println("老师的唱歌很好"); } } Main.java Main { static main(String[] args) { SCTeacher sc = new SCTeacher(); sc.setInfo(); sc.showInfo(); sc.fry(); sc.singing(); // Cooking c = new SCTeacher(); c.fry(); } } 输出: 姓名:tom (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |