Java基础00-接口21
1. 接口
1.1 接口概述
1.2 接口的特点
1.3 接口的成员特点
1.3.1 案例:猫和狗
public interface Jumpping {
public void jump();
}
public abstract class AnimalJumpping {
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;
} public AnimalJumpping(){
System.out.println("抽象类无参构造方法");
} public AnimalJumpping(String name, int age){
System.out.println("抽象类有参构造方法");
} public abstract void eat();
}
public class CatExtendsImplementsJumpping extends AnimalJumpping implements Jumpping { public CatExtendsImplementsJumpping(){
super();
System.out.println("猫的无参构造方法");
} public CatExtendsImplementsJumpping(String name, int age){
super(name, age);
System.out.println("猫的有参构造方法");
} public void eat(){
System.out.println("猫吃鱼");
} public void jump(){
System.out.println("猫跳高");
}
}
public class AnimalDemoExtendsImplementsJumpping {
public static void main(String[] args) {
CatExtendsImplementsJumpping c= new CatExtendsImplementsJumpping();
c.eat();
c.jump();
Jumpping cc= new CatExtendsImplementsJumpping("catA",15);
cc.jump();
AnimalJumpping ccc = new CatExtendsImplementsJumpping("catB",8);
ccc.eat();
ccc.getName();
ccc.getAge();
}
}
输出:
抽象类无参构造方法
猫的无参构造方法
猫吃鱼
猫跳高
抽象类有参构造方法
猫的有参构造方法
猫跳高
抽象类有参构造方法
猫的有参构造方法
猫吃鱼
1.4 类和接口的关系
继承类、实现接口
1.5 抽象类和接口的区别
例子:
门和警报的例子
随着时代的发展,门具备了报警的功能,那该怎么写那?
第一种方案:
将3个功能都放在抽象类里面,
但在这样一来所有继承抽象类的门就都有了报警功能,现实中是不可能所有的门都具备报警功能的,所以这样的写发是不成立的。
第二种方法:
将3种功能都写在接口中,
但是继承接口的门必须都将接口中的方法实现,有的门并不具备报警功能,所以这样写也是不成立的。
最好的设计方法:
因为开和关都是门的基本动作,而报警功能的门附带的功能,并不是每个门都有这样的功能。
所以我们将开和关的都放在抽象类中,门继承的时候就会有开和关的动作,而将报警功能放在接口中,如果有门有报警的功能就实现它的,没有就不实现它。
由此可见,抽象类是对事物的抽象,而接口是对行为的抽象。
抽象类中应该存放的是子类共同的特征,
比如,人都要吃饭,睡觉,
而接口存放的是子类之间不同的特性,
比如,有的人是男人,有的人是女人。
1.5.1 案例
代码思路:
一. 定义3个抽象类有一个接口类:
1. 定义一个说英语的接口:
因为并不是每个人都要学习英语,所以将说英语定义为一个接口。
2. 定义一个抽象人类
每个人都有姓名和年龄的特征和吃饭的行为,所以将他们定义在抽象类中。
3. 定义一个教练抽象类,并继承抽象人类
每个教练都要会教东西,所以他要有teach方法。
4. 定义抽象运动员类,继承人类
每个运动员都要会学习东西,所以他要有study方法。
二. 定义4个具体类:
定义具体篮球教练类,继承教练类
重写教练类的teach(),和人类的eat()方法。
因为教练都必须会教东西,和吃饭。
定义具体乒乓球教练类,继承教练类,实现说英语接口
继承教练类并重写它的方法,同时乒乓球教练也有他的特性,就是会说英语,所以他要实现SpeakEnglish接口。
定义具体篮球运动员类,继承运动员类构造方法: 无参,带参,成员方法,重写吃饭,重写学习
定义具体乒乓球运动员类,继承运动员类,实现说英语接口,构造方法:无参,带参,成员方法,重写吃饭,重写学习,重写说英语
因为和乒乓球有关的人员都要会说英语,所以乒乓球运动员也要实现说英语的接口。
测试类:
运行结果:
以上也可以通过有参构造方法的方式编译运行。
教练对象的创建和使用和以上是一模一样的。
最新文章
- 修改delphi xe6 FMX Label字体颜色
- Controller 接口控制器详解
- css 横向渐变 图片阴影效果 字体模糊效果
- Upgrade to Python 2.7.9 on CentOS5.5
- SharePoint 2013 WebPart属性面板配置
- XGpio函数
- ASP.NET MVC缓存使用
- windows中的mysql修改管理员密码
- 前端框架VUE----表单输入绑定
- 同时安装python2和python3环境
- 粒子跟随本体unity
- 【webpack】webpack.base.conf.js基础配置
- 【Linux】创建不可修改文件
- hbase 学习(十五)缓存机制以及可以利用SSD作为存储的BucketCache
- 【opencv基础】Rect类的神奇用法
- 【机器学习】k-近邻算法以及算法实例
- HDU 5215 Cycle(dfs判环)
- 简单Maven Dos命令语句
- 【二维莫队】【二维分块】bzoj2639 矩形计算
- JS的同步加载、异步加载