java047接口的优点和与抽象类的区别,运动员案例

1.接口collection是java中集合的根接口,或者可以说是最顶层的父接口

2.接口的优点:

    a.类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口。  类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,而接口的出现打破了继承的局限性。

    b.对外提供规则和规范

    c.降低了程序的耦合性提高了开发效果,可以实现模块化开发,定义好规则,每个人实现自己的模块。

3.接口和抽象类的区别

    共性:不断地抽取,抽取出抽象的概念。

    区别:a.类与接口是实现关系,一个类可以实现多个接口,而且要把接口的抽象方法全部实现。

                类与抽象类之间是继承关系,单一继承,一个类只能有一个父类,但是java类还有一个特点就是多层继承。

        b.接口和抽象类之间成员的区别

            成员变量:

                抽象类可以有成员变量,也可以有常量

                接口只能有常量

            成员方法:

                抽象类可以有抽象方法,也可以有非抽象方法

                接口只能有抽象方法,而且方法只有默认修饰符piblic abstract 构造方法。

                抽象类有构造方法,接口没有。

4.运动员案例练习

篮球运动员和教练;乒乓球运动员和教练;篮球运动员和教练要出国访问,需要学习英语,请根据所学知识,分析哪些是类,哪些是抽象类,及哪些是接口。

分析:

    由下至上分析;不断向上抽取共性。

实现:

    由上至下,先实现共性。

使用:

    使用具体的子类。

图片发自简书App


代码实现:

package 接口player;

public class PleyerTest {

public static void main(String[] args) {

//创建乒乓球运动员对象

PingPangPlayer ppp = new PingPangPlayer();

ppp.name="张继科";

ppp.age=28;

ppp.gender="男";

System.out.println("乒乓球运动员"+":"+ppp.getName()+"  "+ppp.getAge()+"岁  "+ppp.getGender());

ppp.sleep();

ppp.study();

ppp.eat();

System.out.println("---------");

//创建篮球运动员对象

BasketballPlayer bbp = new BasketballPlayer();

ppp.name="姚明";

ppp.age=45;

ppp.gender="男";

System.out.println("篮球运动员"+":"+ppp.getName()+"  "+ppp.getAge()+"岁  "+ppp.getGender());

ppp.sleep();

ppp.study();

ppp.eat();

}

}

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 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 getGender() {

return gender;

}

public void setGender(String gender) {

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 PingPangPlayer extends player{

@Override

public void study() {

System.out.println("学习抽球");

}

}

//篮球运动员

class BasketballPlayer extends player implements studyEnglish{

@Override

public void study() {

System.out.println("学习扣篮");

}

@Override

public void speak() {

System.out.println("说英语");

}

}

//乒乓球教练

class PingPangcoach extends coach{

@Override

public void teach() {

System.out.println("教抽球技巧");

}

}

//篮球教练

class Basketballcoach extends coach implements studyEnglish{

@Override

public void teach() {

System.out.println("教扣篮技巧");

}

@Override

public void speak() {

System.out.println("说英语");

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • DAY 05 1、 public classArrayDemo { public static void mai...
    周书达阅读 852评论 0 0
  • 第03天java面向对象 今日内容介绍 ·接口 ·匿名对象&final ·多态 ·接口 1.接口的概述 接口是功能...
    chcvn阅读 540评论 0 0
  • 时光从不曾辜负你和我,每一段时光都是青春的缩影。婆娑中自我放纵,终成一姿态。你就是你,怎么活是自己的事情,不需要别...
    时光中盛开的女子阅读 141评论 0 0
  • 生容易,活容易,生活不容易!选择了上班,就只能好好工作,为老板拼死拼活累成狗;选择创业,你就要承受一定的...
    我是你人生的四月天阅读 236评论 0 1
  • GitHub上有这样一道面试题 var foo={n:1}; var bar=foo; foo.x=foo={n:...
    梦想成为小牛的飞机阅读 878评论 0 1

友情链接更多精彩内容