第十四课:抽象类和接口
一、抽象方法:在子类继承父类之后,发现有些方法必须要进行重写!但是如果父类中不编
写此方法,就没有办法使用多态调用了,所以必须要写,但是没必要实现,
于是成为了抽象
// 父类
public abstract class Pet{
public abstract void eat(); // 抽象方法没有方法体
}
// 子类
public class Dog extends Pet{
public void eat(){
}
}
// 子类
public class Cat extends Pet{
public void eat(){
}
}
main(){
Pet pet = new Dog(); // 父类的引用指向子类的对象
pet.eat();
}
二、了解抽象类和普通类的区别
1.抽象类的特点:
⑴抽象类不能被实例化(实例化:创建对象)
但是抽象类可以作为引用去指向子类的对象
public abstract class Pet{
public abstract void test();
}
// 匿名内部类:可以将匿名内部类 理解为 是该类的一个子类(匿名的) 这个东西
中能用一次
Pet pet = new Pet(){
@Override
public void test(){
}
};
⑵抽象类可以有构造方法
它的构造方法时用来帮助子类创建对象的
⑶只要有抽象方法存在,这个类就是抽象类
抽象类中可以有抽象方法,也可以有普通方法
(“父债子偿”)一个抽象类里的抽象方法 必须要被其子类重写(实现),如果子类不
重写,它也是抽象类
三、掌握抽象类和抽象的方法定义
abstract 抽象的
四、会定义接口
五、了解“接口”的含义
1.接口1:
public class Student{
// 1.私有属性化
private String name;
// 2.提供公共的getter/setter接口
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
}
以后你可能要给别人编写接口
•举例:你要开发一个天气APP,不需要自己去花费时间等测量实时天气情况,只需要
获取一下国家气象局的提供的天气接口即可
国家气象局的数据的数据收集到之后,开发GG给你写了一个方法,这个方法
可以被你调用 你只需要按照要求传入指定的参数,即可得到指定的结果!
public String getxx(String地址,Date时间,String你想要的天气数据编号等…){
//
}
2.接口2:USB接口 电源接口…
3.接口3:interface
实现一个防盗门的功能
门类:开门和关门的功能
锁类:开锁和上锁的功能
防盗门 is a 门 所以可以继承门类,拥有了开门和关门的功能
但是它想拥有开锁和上锁 不能通过继承锁类 1.防盗门 is not a 锁 2.Java中是单
根继承 只能有一个直接父类
如果还想拥有锁的功能,这时候就可以使用接口interface 防盗门 has a 锁
继承:找亲爹
实现接口:认干爹
你只能有一个亲爹,你可以有多个干爹
之所以在Java诞生接口这个概念,其中的原因有:在日趋庞大的系统中,如果将所有
的功能都定义在一个类中,那么必然会导致耦合性的加剧,还有扩展性的降低 所
以我们把一些功能进行聚合,放到接口中,未来谁拥有这些功能直接实现此接口即可
/**
-
防盗门
-
@author Raymond
-
2019年2月17日 下午0:35:20
*/
public class ThiefDoor extends Door inplements Lock,CatEye{
@Override
public void upLock(){}
@Override
public void downLock(){}
}
/**
-
门:有开和关
-
@author Raymond
-
2019年2月17日 下午0:39:56
*/
public class Door{public void open(){
System.out.println(“开门”);
}public void close(){
System.out.println(“关门”);
}
}
/** 锁接口
-
@author Raymond
-
2019年2月17日 下午0:48:30
*/
public interface Lock{
// 在接口中编写普通方法 只能是抽象的abstract 公共的public
void upLock();
void downLock();
}*4.接口的一些注意事项:
⑴接口中的普通方法,都是公共的public抽象的abstract
⑵接口中的属性 都是公共的public静态static常量final
⑶接口中的方法也都需要子类去重写
⑷接口不能实例化,也可以编写匿名内部类
⑸接口和接口之间可以有继承关系
5.演示案例:
需求:模拟手机的功能
手机分为智能机和普通机 手机这个概念就证明它肯定有通话和短信功能
普通机有的功能:听歌
智能机有的功能:上网冲浪 看视频 打游戏 听歌智能机类
普通机类
手机类
听歌接口
上网冲浪接口
看视频接口
…