案例:分析出哪些是类,哪些是抽象类,哪些是接口?
篮球运动员和教练
乒乓球运动员和教练
现在篮球运动员和教练要出国访问,需要学习英语
请根据你所学的知识,分析出来哪些是类,哪些是抽象类,哪些是接口?
分析:
由下至上 不断向上抽取的过程
实现:
由上至下 先实现共性
使用:
使用具体的子类
实现代码:
package com.itheima;
/*
* 篮球运动员和教练
* 乒乓球运动员和教练
* 现在篮球运动员和教练要出国访问,需要学习英语
* 请根据你所学的知识,分析出来哪些是类,哪些是抽象类,哪些是接口
*/
public class InterfaceDemo4 {
public static void main(String[] args) {
//创建篮球运动员对象
BasketBallPlayer bbp = new BasketBallPlayer();
bbp.name = "篮球运动员";
bbp.age = 24;
bbp.gender = "男";
bbp.sleep();
bbp.study();
bbp.speak();
System.out.println("-------------------");
//创建乒乓球教练对象
PingpangCoach ppc = new PingpangCoach();
ppc.name ="乒乓球教练";
ppc.age= 25;
ppc.gender="男";
ppc.sleep();
ppc.teach();
}
}
class Person {
String name; // 姓名
int age; // 年龄
String gender; // 性别
// 无参构造
public Person() {
}
// 有参构造
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
// 吃的方法
public void eat() {
System.out.println("吃饭");
}
// 睡的方法
public void sleep() {
System.out.println("睡觉");
}
}
interface StudyEnglish{
public abstract void speak();
}
// 运动员
abstract class Player extends Person{
// 学习
public abstract void study();
}
// 教练
abstract class Coach extends Person{
// 教
public abstract void teach();
}
// 篮球运动员
class BasketBallPlayer extends Player implements StudyEnglish{
@Override
public void study() {
System.out.println("学打篮球");
}
@Override
public void speak() {
System.out.println("学英语");
}
}
// 乒乓球运动员
class PingpangPlayer extends Player {
@Override
public void study() {
System.out.println("学打乒乓球");
}
}
// 篮球教练
class BasketBallCoach extends Coach implements StudyEnglish{
@Override
public void teach() {
System.out.println("教打篮球");
}
@Override
public void speak() {
System.out.println("学英语");
}
}
// 乒乓球教练
class PingpangCoach extends Coach {
@Override
public void teach() {
System.out.println("教打乒乓球");
}
}