目录
7-8 定义接口(Biology、Animal)、类(Person)、子类(Pupil)
1.接口是什么?
- 接口和类是两个并列的结构,不过可以将接口理解为一种特殊的类(仅由全局常量和公共的抽象方法组成)
- 接口里的方法全为抽象,因此也可以说接口是一些方法特征的集合,接口里只是声明,具体的实现交给相应的类去实现
2.如何定义接口?
2-1.接口定义格式
2-2.定义接口的规则
3.和抽象类的对比
4.巩固习题(选自PTA)
[注]:在PTA里提交,public类要命名为Main,注释掉导入的本地包package homework3;
7-8 定义接口(Biology、Animal)、类(Person)、子类(Pupil)
此题用于练习基本使用和回顾以上知识:
package homework3;
import java.util.Scanner;
public class InterfaceTest8 {
public static void main(String[] args) {
/*
* (4)在测试类Main中,用Pupil类创建一个对象zhangsan。
* 尝试从键盘输入学校信息给zhangsan,获取到该信息后输出该学校信息,格式为“我的学校是XXX”;
* 依次调用zhangsan的breathe()、eat()、sleep()、think()方法
*/
Pupil zhangsan = new Pupil();
Scanner scanner = new Scanner(System.in);
String schoolName = scanner.next();
zhangsan.setSchool(schoolName);
System.out.println("我的学校是"+zhangsan.getSchool());
zhangsan.breath();
zhangsan.eat();
zhangsan.sleep();
zhangsan.think();
}
}
/*
* (1)定义Biology(生物)、Animal(动物)2个接口,
* 其中Biology声明了抽象方法breathe( ),Animal声明了抽象方法eat()和sleep( )
*/
interface Biology{ //省略了public
void breath(); //省略了public abstract
}
interface Animal{
void eat();
void sleep();
}
/*
* (2)定义一个类Person(人)实现上述2个接口,实现了所有的抽象方法,同时自己还有一个方法think()
* breathe()、eat()、sleep()、think()四个方法分别输出: 我喜欢呼吸新鲜空气 我会按时吃饭 早睡早起身体好 我喜欢思考
*/
class Person implements Biology,Animal{ //一个类可以实现多个接口
//实现接口里的所有抽象方法(只能在接口中运用之前的省略写法,类中依然按照类成员方法覆盖的规则,需要加上public)
public void breath() {
System.out.println("我喜欢呼吸新鲜空气");
}
public void eat() {
System.out.println("我会按时吃饭");
}
public void sleep() {
System.out.println("早睡早起身体好");
}
//自己特有的方法think
public void think() {
System.out.println("我喜欢思考");
}
}
/*
* (3)定义Person类的子类Pupil(小学生),有私有的成员变量school(学校),
* 公有的成员方法setSchool( )、getSchool()分别用于设置、获取学校信息。
*/
class Pupil extends Person{
private String school=null;
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
}