Java基础2

来源:互联网 发布:数控车螺纹编程 编辑:程序博客网 时间:2024/05/19 06:17

抽象类的一些基本概念

抽象方法:在Java中,一个没有方法体的方法定义为抽象方法。抽象类:类中如果有抽象方法,该类定义为抽象类。1>抽象类的概述:    动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。    我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类。  2>抽象类的特点:    A:抽象类和抽象方法必须用abstract关键字修饰    B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类    C:抽象类不能实例化        因为它不是具体的。        抽象类有构造方法,但是不能实例化?构造方法的作用是什么呢?        用于子类访问父类数据的初始化    D:抽象的子类        a:如果不想重写抽象方法,该子类是一个抽象类。        b:重写所有的抽象方法,这个时候子类是一个具体的类。    抽象类的实例化其实是靠具体的子类实现的。是多态的方式。        Animal a = new Cat();3>抽象类的成员特点:    成员变量:既可以是变量,也可以是常量。    构造方法:有。        用于子类访问父类数据的初始化。    成员方法:既可以是抽象的,也可以是非抽象的。4> 抽象类的成员方法特性:    A:抽象方法 <强制要求子类做的事情>。    B:非抽象方法 <子类继承的事情,提高代码复用性>

代码块

代码块语法遵循标准markdown代码,例如:

abstract class Animal{    int age=20;    final int age2=40;    public Animal() {}    public Animal(String name,int age) {}    public abstract void show();    public  void method(){        System.out.println("Animal method");    }   }class Dog extends Animal{    public void show(){        System.out.println("");    }}public class AbstactDemo2 {    public static void main(String[] args) {        // TODO 自动生成的方法存根        Animal a=new Dog();        a.age=10;//      a.age3=30;        System.out.println(a.age);        System.out.println(a.age2);    }}
-----------------------------------------

Java 抽象类经典例子1

抽象类的练习 
老师案例: 
具体类:基础班老师 就业班老师 
共性:姓名 年龄 讲课

代码块

代码块语法遵循标准markdown代码,例如:

abstract class teacher{    private int age;    private String name;    public teacher(){}    public teacher(String name,int age){        this.name=name;        this.age=age;    }    public void setage(int age){        this.age=age;    }    public int getage(){        return age;    }    public void setname(String name){        this.name=name;    }    public String getname(){        return name;    }    //抽象方法    public abstract void teach();}class BasicTeacher extends teacher{    public BasicTeacher(){}    public BasicTeacher(String name,int age){    super(name,age);    }    public void teach(){        System.out.println("BasicTeacher");    }}class WorkTeacher extends teacher{    public WorkTeacher(){}    public WorkTeacher(String name,int age){    super(name,age);    }    public void teach(){        System.out.println("WorkTeacher");    }}public class AbstractTest2 {    public static void main(String[] args) {        //测试1       无参应用        System.out.println("------测试1------");        BasicTeacher bt1=new BasicTeacher();        bt1.setname("bt1");        bt1.setage(20);        bt1.teach();        System.out.println(bt1.getname()+"----"+bt1.getage());        WorkTeacher wt1=new WorkTeacher();        wt1.setname("wt1");        wt1.setage(30);        wt1.teach();        System.out.println(wt1.getname()+"----"+wt1.getage());        //测试2        System.out.println("------测试2------");        BasicTeacher bt2=new BasicTeacher("bt2",22);        System.out.println(bt2.getname()+"----"+bt2.getage());        bt2.teach();        WorkTeacher wt2=new WorkTeacher("wt2",32);        System.out.println(wt2.getname()+"----"+wt2.getage());        wt2.teach();        //多态版只有一个t,体现多态的简洁        //测试3        //多态版的无参        System.out.println("------测试3------");        teacher t=new BasicTeacher();          t.setname("dbt1");        t.setage(20);        System.out.println(t.getname()+"----"+t.getage());        t.teach();        t=new WorkTeacher();        t.setname("t");        t.setage(20);        System.out.println(t.getname()+"----"+t.getage());        t.teach();        //测试4       //多态的带参         System.out.println("------测试4------");        t=new BasicTeacher("t",22);          System.out.println(t.getname()+"----"+t.getage());        t.teach();        t=new WorkTeacher("t",32);        System.out.println(t.getname()+"----"+t.getage());        t.teach();    }}... prompt'''
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98

答案

——测试1—— 
BasicTeacher 
bt1—-20 
WorkTeacher 
wt1—-30 
——测试2—— 
bt2—-22 
BasicTeacher 
wt2—-32 
WorkTeacher 
——测试3—— 
dbt1—-20 
BasicTeacher 
t—-20 
WorkTeacher 
——测试4—— 
t—-22 
BasicTeacher 
t—-32 
WorkTeacher


-------------------------------------------------------

问题描述

抽象类的练习 
学生案例: 
具体类:一般学生 优秀学生 
共性:姓名 年龄 年纪 
吃饭 
差异: 学习内容

代码块

代码块语法遵循标准markdown代码,例如:

abstract class student {    //成员变量    private String name;    private int age;    private int grand;    //无参构造方法    public student(){}    //带参构造方法    public student(String name,int age,int grand){        this.name=name;        this.age=age;        this.grand=grand;    }    public void setname(String name){        this.name=name;    }    public String getname(){        return name;    }    public void setage(int age){        this.age=age;    }    public int getage(){        return age;    }    public void setgrand(int grand){        this.grand=grand;    }    public int getgrand(){        return grand;    }       //抽象方法    abstract public void study();    //成员方法    public void eat(){        System.out.println("该吃饭了:");    }}class Basicstudent extends student {    //构造方法    public Basicstudent(){}    public Basicstudent(String name,int age,int grand){        super(name,age,grand);    }    public void study(){        System.out.println("Basicstudent:   study");    }}class Goodstudent extends student{    public Goodstudent(){}    public Goodstudent(String name,int age,int grand){        super(name,age,grand);    }    public void study(){        System.out.println("Goodstudent:  study");    }}public class AbstractTest3{    public static void main(String[] args){        student s =new Basicstudent();        s.setname("Basicstudent1");        s.setage(20);        s.setgrand(1111);        System.out.println(s.getname()+"----"+s.getage()+"----"+s.getgrand());        s.eat();        s.study();        s =new Basicstudent("Basicstudent1",20,2222);        System.out.println(s.getname()+"----"+s.getage()+"----"+s.getgrand());        s.eat();        s.study();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

答案

Basicstudent1—-20—-1111 
该吃饭了: 
Basicstudent: study 
Basicstudent1—-20—-2222 
该吃饭了: 
Basicstudent: study


-----------------------------------------------------------

抽象类的练习 
学生案例: 
具体类:一般员工 优秀员工 
共性:姓名 工号 薪水 
差异: 做事 奖金

代码块

代码块语法遵循标准markdown代码,例如:

//抽象类 employeeabstract class employee{    private String name;    private String id;    private int salary;    public employee(){}    public employee(String name,String id,int salary){        this.name=name;        this.id=id;        this.salary=salary;    }    public void setname(String name){        this.name=name;    }    public String getname(){        return name;    }    public void setid(String id){        this.id=id;    }    public String getid(){        return id;    }    public void setsalary(int salary){        this.salary=salary;    }    public int getsalary(){        return salary;    }    public abstract void work();}class Basicemployee extends employee{    public Basicemployee(){}    public Basicemployee(String name,String id,int salary){        super(name,id,salary);    }       public void work(){        System.out.println("做简单工作:");    }}class Goodempoyee extends employee{    private int money;    public Goodempoyee() {}    public Goodempoyee(String name,String id,int salary,int money){        super(name,id,salary);        this.money=money;    }    public void setmoney(int money){        this.money=money;    }    public int getmoney(){        return money;    }    public void work(){        System.out.println("做高级工作:");    }   }class AbstractTest4{    public static void main(String[] args){    employee emp=new Basicemployee();    emp.setname("Basicemployee-1");    emp.setid("qwe0001");    emp.setsalary(10001);    System.out.println(emp.getname()+"----"+emp.getid()+"----"+emp.getsalary());    emp=new Basicemployee("Basicemployee-2","qwe0002",10002);    System.out.println(emp.getname()+"----"+emp.getid()+"----"+emp.getsalary());    //子类特有的要用一般的方法来调用,如果用多态则会报错    Goodempoyee emp2=new Goodempoyee();    emp2.setname("Goodempoyee-3");    emp2.setid("qwe0003");    emp2.setsalary(30000);    emp2.setmoney(10000);    System.out.println(emp2.getname()+"----"+emp2.getid()+"----"+emp2.getsalary()+"----"+emp2.getmoney());    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

答案

Basicemployee-1—-qwe0001—-10001 
Basicemployee-2—-qwe0002—-10002 
Goodempoyee-3—-qwe0003—-30000—-10000


--------------------------------------------------

接口的一些基本概念

抽象方法:在Java中,一个没有方法体的方法定义为抽象方法。抽象类:类中如果有抽象方法,该类定义为抽象类。1>抽象类的概述:    动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。    我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该类必须是抽象类。  2>接口特点:    A:接口用关键字interface表示  格式:interface 接口名{}    B:类实现接口用implements表示 格式:class 类名 implements 接口名{}    C:接口不能实例化        那么如何实例化?        按照多态的方式,由具体的子类实例化,其实这也是多态的一种,接口多态。    D:接口的子类        a:要么是抽象类。        b:要么重写接口中的所有抽象方法。3>接口的成员特点:    成员变量:只能是常量;默认修饰符public static final;    构造方法:没有。因为接口主要是拓展功能的,而没有具体存在。    成员方法:只能是抽象方法,默认修饰符public abstract.4> 抽象类的成员方法特性:    A:抽象方法 <强制要求子类做的事情>。    B:非抽象方法 <子类继承的事情,提高代码复用性>

代码块

代码块语法遵循标准markdown代码,例如:

interface AnimalTrain{                //接口的表示    public abstract void jump();}class Cat implements AnimalTrain{     //类实现接口用implements    public void jump(){        System.out.println("猫可以跳高了");    }}public class InterfaceDemo {    public static void main(String[] args) {        Cat at =new  Cat();        at.jump();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

接口的特点

interface Inter {    public int num = 10;    public final int num2 = 20;    public static final int num3 = 30;  //默认修饰是public static final    //错误: 需要<标识符>    //public Inter() {}    //接口方法不能带有主体    //public void show() {}    //abstract void show(); //默认是public abstract    public void show();     //默认是public abstract}//接口名+Impl这种格式是接口的实现类格式/*class InterImpl implements Inter {    public InterImpl() {        super();    }}*/class InterImpl extends Object implements Inter {    public InterImpl() {        super();    }    public void show() {}}//测试类class InterfaceDemo2 {    public static void main(String[] args) {        //创建对象        Inter i = new InterImpl();        System.out.println(i.num);        System.out.println(i.num2);        //i.num = 100;        //i.num2 = 200;        //System.out.println(i.num); //无法为最终变量num分配值        //System.out.println(i.num2);//无法为最终变量num2分配值        System.out.println(Inter.num);        System.out.println(Inter.num2);        System.out.println("--------------");    }}
-------------------------

猫狗案例

猫狗案例,加入跳高的额外功能分析:从具体到抽象    猫:        姓名,年龄        吃饭,睡觉    狗:        姓名,年龄        吃饭,睡觉    由于有共性功能,所以,我们抽取出一个父类:    动物:        姓名,年龄        吃饭();        睡觉(){}    猫:继承自动物    狗:继承自动物    跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口    接口:        跳高    部分猫:实现跳高    部分狗:实现跳高实现;    从抽象到具体使用:    使用具体类

代码块

interface Jumpping{    public abstract void jump();}abstract class Animal{    private String name;    private int age;    public void setname(String name){        this.name=name;    }    public String getname(){        return name;    }    public void setage(int age){        this.age=age;    }    public int getage(){        return age;    }    Animal(){}    Animal(String name,int age){        this.name=name;        this.age=age;    }    public abstract void eat();  //抽象方法    public void sleep(){         //成员方法        System.out.println("该睡觉了");    }}//具体猫类class  Cat extends Animal{    public Cat() {}    public Cat(String name,int age){        super(name,age);    }    public void eat(){        System.out.println("猫吃鱼:");    }}//具体狗类class Dog extends Animal{    public Dog(){}    public Dog(String name,int age){        super(name,age);    }    public void eat(){        System.out.println("狗吃肉:");    }}//具有调高功能的猫class JumpCat extends Cat implements Jumpping{    public JumpCat() {}    public JumpCat(String name,int age){        super(name,age);    }    public void jump(){        System.out.println("跳高猫");    }}class JumpDog extends Dog implements Jumpping{    public JumpDog(){}    public JumpDog(String name,int age){        super(name,age);    }    public void jump(){        System.out.println("跳高狗");    }}public class InterfaceTest {    public static void main(String[] args){        //定义跳高猫并测试        JumpCat jc = new JumpCat();        jc.setname("哆啦A梦");        jc.setage(5);        System.out.println(jc.getname()+"----"+jc.getage()+"岁了");        jc.eat();        jc.sleep();        jc.jump();        //        JumpCat jc2= new JumpCat("哆啦B梦",4);        System.out.println(jc2.getname()+"----"+jc2.getage()+"岁了");        jc2.eat();        jc2.sleep();        jc2.jump();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99

答案

哆啦A梦—-5岁了 
猫吃鱼: 
该睡觉了 
跳高猫 
哆啦B梦—-4岁了 
猫吃鱼: 
该睡觉了 
跳高猫

-------------------------------------------------

教练和运动员案例(学生分析然后讲解)    乒乓球运动员和篮球运动员。    乒乓球教练和篮球教练。    为了出国交流,跟乒乓球相关的人员都需要学习英语。    请用所学知识:    分析,这个案例中有哪些抽象类,哪些接口,哪些具体类。

这里写图片描述

代码块

//定义一个说英语的接口interface SpeakEnglish {    //说英语    public abstract void speak();}//定义人的抽象类abstract class Person {    private String name;    private int age;    public Person() {}    public Person(String name,int age) {        this.name = name;        this.age = age;    }    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 void sleep() {        System.out.println("人都是要睡觉的");    }    //吃饭    public abstract void eat();}//定义运动员抽象类abstract class Player extends Person {    public Player() {}    public Player(String name,int age) {        super(name,age);    }    //学习    public abstract void study();}//定义教练抽象类abstract class Coach extends Person {    public Coach() {}    public Coach(String name,int age) {        super(name,age);    }    //教    public abstract void teach();}//定义乒乓球运动员具体类class PingPangPlayer extends Player implements SpeakEnglish {    public PingPangPlayer(){}    public PingPangPlayer(String name,int age) {        super(name,age);    }    //吃    public void eat() {        System.out.println("乒乓球运动员吃大白菜,喝小米粥");    }    //学习    public void study() {        System.out.println("乒乓球运动员学习如何发球和接球");    }    //说英语    public void speak() {        System.out.println("乒乓球运动员说英语");    }}//定义篮球运动员具体类class BasketballPlayer extends Player {    public BasketballPlayer(){}    public BasketballPlayer(String name,int age) {        super(name,age);    }    //吃    public void eat() {        System.out.println("篮球运动员吃牛肉,喝牛奶");    }    //学习    public void study() {        System.out.println("篮球运动员学习如何运球和投篮");    }}//定义乒乓球教练具体类class PingPangCoach extends Coach implements SpeakEnglish {    public PingPangCoach(){}    public PingPangCoach(String name,int age) {        super(name,age);    }    //吃    public void eat() {        System.out.println("乒乓球教练吃小白菜,喝大米粥");    }    //教    public void teach() {        System.out.println("乒乓球教练教如何发球和接球");    }    //说英语    public void speak() {        System.out.println("乒乓球教练说英语");    }}//定义篮球教练具体类class BasketballCoach extends Coach {    public BasketballCoach(){}    public BasketballCoach(String name,int age) {        super(name,age);    }    //吃    public void eat() {        System.out.println("篮球教练吃羊肉,喝羊奶");    }    //教    public void teach() {        System.out.println("篮球教练教如何运球和投篮");    }}class InterfaceTest3 {    public static void main(String[] args) {        //测试运动员(乒乓球运动员和篮球运动员)        //乒乓球运动员        PingPangPlayer ppp = new PingPangPlayer();        ppp.setName("王浩");        ppp.setAge(33);        System.out.println(ppp.getName()+"---"+ppp.getAge());        ppp.eat();        ppp.sleep();        ppp.study();        ppp.speak();        System.out.println("----------------");        //通过带参构造给数据(留给你们)        //篮球运动员        BasketballPlayer bp = new BasketballPlayer();        bp.setName("姚明");        bp.setAge(34);        System.out.println(bp.getName()+"---"+bp.getAge());        bp.eat();        bp.sleep();        bp.study();        //bp.speak(); //没有该方法        //测试教练自己做    }}
--------------------------------------