当前位置: 首页 > news >正文

学Java第三十五天------接口

注意:

1、接口是对行为的抽象,比如游泳这个接口,就包含青蛙类、狗类、学生类、老师类;再比如,搬家这个行为(接口),就可以包含三轮车、搬家公司、人肩扛等等

2、抽象类是对一类事物的抽象

一、接口的定义和使用

二、接口代码练习

1、动物-----父类

package com.interfaceapp.demo1;public abstract class Animal {private String name;private int age;public Animal() {}public Animal(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 abstract void eat();
}

2、游泳规则------接口

package com.interfaceapp.demo1;public interface Swim {public abstract void swim();
}

3、青蛙------动物子类-------游泳接口

package com.interfaceapp.demo1;public class Frog extends Animal implements Swim{public Frog() {}public Frog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("青蛙吃虫子");}@Overridepublic void swim() {System.out.println("蛙泳");}
}

4、狗--------动物子类--------游泳接口

package com.interfaceapp.demo1;public class Dog extends Animal implements Swim{public Dog() {}public Dog(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("狗啃骨头");}@Overridepublic void swim() {System.out.println("狗刨");}
}

5、兔子--------动物子类

package com.interfaceapp.demo1;public class Rabbit extends Animal{public Rabbit() {}public Rabbit(String name, int age) {super(name, age);}@Overridepublic void eat() {System.out.println("兔子吃胡萝卜");}
}

6、测试类

package com.interfaceapp.demo1;public class Test {public static void main(String[] args) {Dog d=new Dog("小黑",2);System.out.println(d.getAge()+","+d.getName());d.eat();d.swim();Rabbit r=new Rabbit("xiaobai",3);System.out.println(r.getAge()+","+r.getName());r.eat();}
}

三、小总结:

1、先写父类(所有子类都有的行为写成抽象方法,父类写成抽象类)和接口(只有两个及以上并且不是全部子类会有这个接口,接口里的方法要写成抽象方法)。

2、写子类,看是否继承父类,是否实现接口,继承或者实现,都要重写抽象方法。

3、子类也要写构造函数。

四、接口中成员的特点

代码示例:

接口:

package com.interfaceapp.demo2;public interface Inter {public static final int a=10;//接口里面只能有常量,且该常量所有地方都能使用,用接口.常量名调用public abstract void method();}

一个类,该类实现上面的接口:

package com.interfaceapp.demo2;public class InterF implements Inter {@Overridepublic void method() {System.out.println("method");}
}

测试:

package com.interfaceapp.demo2;public class Test {public static void main(String[] args) {InterF i=new InterF();i.method();//methodSystem.out.println(Inter.a);//10}
}

心得:我觉得接口就是:不是所有子类都有共同的某个方法,只有某几个有共同的方法,所以就把这个方法抽象到接口中,当子类需要这个方法时,就调用接口中的方法即可。

五、接口和类之间的关系

心得:

类实现了多个接口,那就要重写所有接口的所有抽象方法

接口可以继承接口,如果一个类实现了一个体系的最下面的接口,那这个类就要重写这个子接口以及上面所有接口的所有抽象方法。

如果要调用这些方法,是要先在一个类中实现这些接口中的抽象方法,之后创建该类的对象,用该对象来调用这些方法。

六、接口和抽象类的综合练习

1、画图

注意:有多种方法,可以多画几次,看哪个条理更清晰

2、写代码

(1)人-----顶父类----也写成抽象类

因为创建一个父类的对象是没有意义的,所以变成抽象类,就不会创建对象了

package com.interfaceapp.demo3;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;}}

(2)运动员类-----继承父类-----虚拟类,学()是虚拟方法

package com.interfaceapp.demo3;public abstract class Sporter extends Person{public Sporter() {}public Sporter(String name, int age) {super(name, age);}public abstract void learn();
}

(3)教练类-----继承父类-----虚拟类,教()是虚拟方法

package com.interfaceapp.demo3;public abstract class Coach extends Person{public Coach() {}public Coach(String name, int age) {super(name, age);}public abstract void teach();
}

(4)说英语接口类

package com.interfaceapp.demo3;public interface SpeakEnglish {public abstract void speakEnglish();
}

(5)乒乓球运动员类------继承运动员类-----实现说英语接口

package com.interfaceapp.demo3;public class PingPangballSptr extends Sporter implements SpeakEnglish {public PingPangballSptr() {}public PingPangballSptr(String name, int age) {super(name, age);}@Overridepublic void speakEnglish() {System.out.println("乒乓球运动员说英语");}@Overridepublic void learn() {System.out.println("乒乓球运动员学习乒乓球");}
}

(6)乒乓球教练类------继承教练类-----实现说英语接口

package com.interfaceapp.demo3;public class PingPangCoach extends Coach implements SpeakEnglish{public PingPangCoach() {}public PingPangCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("乒乓球教练教乒乓球");}@Overridepublic void speakEnglish() {System.out.println("乒乓球教练说英语");}
}

(7)篮球运动员类------继承运动员类

package com.interfaceapp.demo3;public class BasketballSptr extends Sporter{public BasketballSptr() {}public BasketballSptr(String name, int age) {super(name, age);}@Overridepublic void learn() {System.out.println("篮球运动员学篮球");}
}

(8)篮球教练类------继承教练类

package com.interfaceapp.demo3;public class BasketballCoach extends Coach{public BasketballCoach() {}public BasketballCoach(String name, int age) {super(name, age);}@Overridepublic void teach() {System.out.println("篮球教练教篮球");}
}

总结:

所有子类都有的共同行为,抽取到父类成为抽象方法,若只有几个子类共有的行为,就抽取到一个接口中。

http://www.dtcms.com/a/472017.html

相关文章:

  • Java的多态快速入门
  • 莆田社交网站安卓app软件开发教程
  • 做php网站的环境小说网站的内容做
  • 海洋网站建设公司自动生成logo的软件
  • 品牌设计网站怎么做标小智logo在线设计
  • 实时热搜榜榜单湖南seo推广多少钱
  • 高端网站建设价格经常使用( )对网页的布局进行控制
  • 大麦网抢票:基于Wireshark协议分析
  • 如何做一个静态网站健康管理 网站建设
  • 沈阳蓝德网站建设wordpress 后台登陆美化
  • 淘宝网站开发用到哪些技术受欢迎的徐州网站建设
  • 网站建设代码结构如何做网站网站代理
  • 网站刚刚开始怎么做优化推广seo
  • 企业网站的常见类型有网站备案是空间备案还是域名备案
  • 备案需要写网站建设方案书蚌埠百度做网站
  • 连接物理与数字世界 昂瑞微如何炼成射频芯片领域的领航者?
  • 二叉树的迭代遍历
  • 运营推广是什么工作sem优化软件哪家好
  • 广州网站建设哪个平台好胖子马wordpress模板:q8免费版
  • 青岛 建网站域名做网站
  • 企业网站的制作原则网站系统建设系广告经营者
  • 平谷网站建设公司视觉设计网站推荐
  • 蚌埠网站制作哪里有朝阳区住房和城乡建设部网站
  • 商城网站建设 优帮云徐州小学网站建设
  • 中国空间站成为全人类太空之家可以免费观看电视电影
  • c++ const_cast 用法
  • SOUI里实现打印预览续
  • C++基础:(十)vector 类的基础使用
  • 网站内容架构wordpress无法创建目录
  • 专门做茶叶会的音乐网站浙江省住房和城乡建设厅官网