- 接口支持单继承、多继承、多层继承
示例:
package com.bxw.demo.interface_;
public class InterfaceExtents {
public static void main(String[] args) {
}
}
// 创建接口1
interface Inter1 {}
// 创建接口2
interface Inter2 {}
// 创建接口3
interface 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) {
}
}
// 创建接口A
interface A {}
// 创建接口B
interface B {}
// 创建接口C
interface 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的方法
@Override
public 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 {
@Override
public void research(String name) {
System.out.println(name + "会研究" + "\t" +
"学科:" + Scientist.subject + "\t" +
"学历:" + Scientist.diploma + "\t");
}
@Override
public String thesis() {
return getName() + "发表了关于自然的论文";
}
@Override
public void teach() {
System.out.println( getName() + "考取了教师资格证");
}
@Override
public void program() {
System.out.println(getName() + "编写出了优秀的程序");
}
public XiaoHua(String name, int age, String sex, int id) {
super(name, age, sex, id);
}
}