接口和抽象类的综合练习

阅读: 评论:0

接口和抽象类的综合练习

接口和抽象类的综合练习

接口和抽象类的综合练习

接口讲解入口

文章目录

  • 接口和抽象类的综合练习
    • 【题目描述】
    • 【题目分析】
    • 【代码实现】

【题目描述】

编写带有接口和抽象类的标准Javabean类

我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练。

为了出国交流,跟乒乓球相关的人员都需要学习英语

请用所有知识分析,在这个案例中,那哪些是具体类,哪些是抽象类,哪些是接口

乒乓球运动员:姓名,年龄,学打乒乓球,说英语

篮球运动员:姓名,年龄,学打篮球

乒乓球教练:姓名,年龄,教打乒乓球,说英语

篮球教练:姓名,年龄,教打篮球

【题目分析】

  • 首先可以确定,子类分别是乒乓球运动员,篮球运动员,乒乓球教练,篮球教练

  • **思路一:按照运动进行分类。**将乒乓球相关的运动员和教练放到一个父类,把姓名,年龄,学英语放到这个父类中;将篮球相关的运动员和教练放到一个父类,把姓名,年龄放到这个父类中。然后将这两个父类抽取公共的属性姓名,年龄,放到更高层的父类Person中。用两个接口分别代表学和教,运动员实现接口学,教练实现接口教。

  • 思路一中具体类是乒乓球运动员、乒乓球教练、篮球运动员、篮球教练、篮球从业者、乒乓球从业者。接口是学和教

  • **思路二:按照职业进行分类。**将运动员们放到一个父类,把姓名,年龄,学运动放到这个父类中;将教练们放到一个父类,把姓名,年龄,教运动放到这个父类中。然后将这两个父类抽取公共的属性姓名,年龄,放到更高层的父类Person中。用一个借口表示学英语,乒乓球运动员和乒乓球教练实现学英语的接口

  • 思路二中具体类就是乒乓球运动员,篮球运动员,篮球教练,乒乓球教练,接口就是学英语,抽象类就是运动员和教练

  • 根据这两种思路的结构图不难看出,思路二更加简洁,所以以下就用思路二进行代码实现

【代码实现】

  1. 第一步

    依据从上向下的顺序,首先应该创建最高级父类Person。在父类Person中应该有成员变量姓名、年龄,还要有对应的构造方法以及方法

    public 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;}
    }
    

    Person类设为抽象类是因为不想让外界直接创建Person类,直接创建顶层父类是没有意义的

  2. 第二步

    创建完父类Person后,接着创建它的子类Sporter和Coach,在Sporter类和Coach类中首先要有父类中的成员变量的构造方法,还要在Sporter类中有抽象方法的learn,在Coach类中有抽象方法teach。因此Sporter类和Coach类是抽象类

    //Sporter类
    public abstract class Sporter extends Person{public Sporter() {}public Sporter(String name, int age) {super(name, age);}public abstract void learn();
    }
    
    //Coach类
    public abstract class Coach extends Person{public Coach() {}public Coach(String name, int age) {super(name, age);}public abstract void teach();
    }
    
  3. 第三步

    接着,需要创建接口English,在接口中写明抽象方法

    public interface English {public abstract void speakEnglish();
    }
    
  4. 第四步

    创建Sporter类的子类PingPongSporter类和BasketballSporter类,并且完成相关的功能

    //PingPongSporter类
    public class PingPongSporter extends Sporter implements English{public PingPongSporter() {}public PingPongSporter(String name, int age) {super(name, age);}@Overridepublic void speakEnglish() {System.out.println("乒乓球运动员学英语");}@Overridepublic void learn() {System.out.println("乒乓球运动员学打乒乓球");}
    }
    
    //BasketballSporter类
    public class BasketballSporter extends Sporter {public BasketballSporter() {}public BasketballSporter(String name, int age) {super(name, age);}@Overridepublic void learn() {System.out.println("篮球运动员学打篮球");}}
    

    因为PingPongSporter类需要实现English接口,因此需要重写English接口里面的抽象方法。

  5. 第五步

    创建Coach类的子类PingPongCoach类和BasketballCoachr类,并且完成相关的功能

    //PingPongCoach类
    public class PingPongCoach extends Coach implements English{public PingPongCoach() {}public PingPongCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("乒乓球教练在教打乒乓球");}@Overridepublic void speakEnglish() {System.out.println("乒乓球教练在学英语");}
    }
    
    //BasketballCoach类
    public class BasketballCoach extends Coach{public BasketballCoach() {}public BasketballCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("篮球教练在教打篮球");}
    }

    因为PingPongCoach类需要实现English接口,因此需要重写English接口里面的抽象方法。

  6. 第六步

    编写Test类,实现相应的输出

    public class Teat {public static void main(String[] args) {PingPongSporter pps = new PingPongSporter("ppa", 23);System.out.Name() + " " + Age());pps.learn();pps.speakEnglish();PingPongCoach ppc=new PingPongCoach("ppc",40);System.out.Name()+" "&#Age());ach();ppc.speakEnglish();BasketballSporter bs=new BasketballSporter("bs",24);System.out.Name()+" "&#Age());bs.learn();BasketballCoach bc=new BasketballCoach("bc",42);System.out.Name()+" "&#Age());bc.teach();}
    }
    

    最终结果

本文发布于:2024-02-01 07:25:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674354134874.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:接口   抽象类
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23