- 接口支持单继承、多继承、多层继承
示例:
package com.bxw.demo.interface_;public class InterfaceExtents {public static void main(String[] args) {}}// 创建接口1interface Inter1 {}// 创建接口2interface Inter2 {}// 创建接口3interface Inter3 {}// 创建接口a1,单继承interface A1 extends Inter1 {}// 创建接口A2,多继承interface A2 extends Inter1,Inter2,Inter3 {}// 创建接口A3,多层继承interface A3 extends A2 {}
- 类值支持单实现,多实现
示例:
package com.bxw.demo.interface_;public class ClassImInter {public static void main(String[] args) {}}// 创建接口Ainterface A {}// 创建接口Binterface B {}// 创建接口Cinterface C {}// 创建实现类,单实现class D_A implements A{}// 创建实现类,多实现class D_A_B_C implements A,B,C {}
- 父类定义的是先天存在的属性和行为
- 接口是定义了后天可以学习发展的能力
综合案例:继承与实现方法
代码:
package com.bxw.demo.interface_;/*** 1.定义两个类,非别是Person类和Student类* 2.定义三个接口,方别是科学家(Scientist)接口,教师(Teacher)接口,程序员(Programmer)接口* 3.学生属于Person类,继承了Person类的所有属性,同时Student类也有自己的属性* 4.学生在不断学习,毕业之后相当科学家、老师、程序员* 5.为他设计不同的未来*/public class InterDemo {public static void main(String[] args) {// 实现小红的未来XiaoHong xiaoHong = new XiaoHong("小红", 25, "女", 12);XiaoHua xiaoHua = new XiaoHua("小华",26,"男",24);// 小红是一个学生,他需要先展示一些人和学生的属性xiaoHong.eat();xiaoHong.sleep();xiaoHong.study();// 展示一下她成为老师的能力xiaoHong.teach();// 下面展示一些小华的人和学生属性xiaoHua.eat();xiaoHua.sleep();xiaoHua.study();// 展示一些小华的所有能力xiaoHua.teach();xiaoHua.research("小华");System.out.println(xiaoHua.thesis());xiaoHua.program();}}// 定义一个Person类class Person {// 定义人的共同属性private String name; // 名字private int age; // 年龄private String sex; // 性别// 定义人的共同实现public void eat(){System.out.println(getName() + "吃饭");}public void sleep(){System.out.println(getName() + "睡觉");}public Person() {}public Person(String name, int age, String sex) {this.name = name;this.age = age;this.sex = sex;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}}// 定义Student类并继承Person类class Student extends Person{// 定义学生特有的属性private int Id; // 学号// 定义学生特有的方法public void study(){System.out.println(getName() + "学习");}public Student() {}public Student(int id) {Id = id;}public Student(String name, int age, String sex) {super(name, age, sex);}public Student(String name, int age, String sex, int id) {super(name, age, sex);Id = id;}public int getId() {return Id;}public void setId(int id) {Id = id;}}// 创建科学家接口interface Scientist {// 要成为科学家需要制定的实现目标String subject = "自然科学"; // 学科必须是这个String diploma = "硕士"; // 学历必须是硕士// 制定一些需要完成的目标public void research(String name); // 研究public String thesis(); // 论文}// 创建教师接口interface Teacher {// 成为教师必须要实现目标public void teach(); // 教学}// 创建程序员接口interface Programmer {// 成为程序员必须要实现目标public void program(); // 编程}// 学生小红,想成为教师class XiaoHong extends Student implements Teacher {// 必须实现Teacher的方法@Overridepublic void teach() {System.out.println("name:"+ getName() + "\t" +"age:" + getAge() + "\t" +"sex:" + getSex() + "\t" +"id:" + getId() + "\t" +"他学会的教书" + "\t" );}public XiaoHong(String name, int age, String sex, int id) {super(name, age, sex, id);}}// 小华什么都想成为class XiaoHua extends Student implements Scientist,Teacher,Programmer {@Overridepublic void research(String name) {System.out.println(name + "会研究" + "\t" +"学科:" + Scientist.subject + "\t" +"学历:" + Scientist.diploma + "\t");}@Overridepublic String thesis() {return getName() + "发表了关于自然的论文";}@Overridepublic void teach() {System.out.println( getName() + "考取了教师资格证");}@Overridepublic void program() {System.out.println(getName() + "编写出了优秀的程序");}public XiaoHua(String name, int age, String sex, int id) {super(name, age, sex, id);}}
