无聊的网管实训啊!!!!!!!!
不如就来做一些java的学习吧
有这么一道题:
(1)所有的可拨号设备都有拨号功能(dailup)
(2)所有的播放设备都有播放功能(play)
(3)所有的照相设备都有拍照功能(takePhoto)
(4)定义一个电话类Telephone,有拨号功能
(5)定义一个Dvd类有播放功能
(6)定义一个照相机类Camera,有照相功能
(7)定义一个手机类Mobile,有上诉三个功能
(8)定义一个人类Person,有如下方法:
使用拨号设备(use)
使用拍照设备(use)
使用播放设备(use)
使用拨号、拍照、播放设备(use)
代码如下:
interface dialer{ //拨号接口
public void dailup();
}
interface player{ //播放接口
public void play();
}
interface photoer{ //拍照接口
public void takePhoto();
}
//抽象拍照类
public abstract class Camera implements photoer{
public void takePhoto() {
out.print("taking.....");
}
}
//播放类
public class Dvd implements player{
public void play() {
out.print("playing.....");
}
}
//抽象电话类
public abstract class Telephone implements dialer{
public void dailup() {
out.print("Trying.....");
}
}
//手机类
public class Mobile implements dialer,player,photoer{
public void takePhoto() {
out.print("taking.....");
}
public void play() {
out.print("playing.....");
}
public void dailup() {
out.print("Trying.....");
}
}
//人类
public class Person {
void use(Dvd D) {
D.play();
}
void use(Camera C) {
C.takePhoto();
}
void use(Telephone T) {
T.dailup();
}
void use(Mobile M) {
M.dailup();
M.takePhoto();
M.play();
}
public static void main(String[] args) {//主函数入口
Dvd D =new Dvd();
Mobile M=new Mobile();
Person P = new Person();
P.use(M);
P.use(D);
}
}
在人类里面,其实有一些是错误的,比如使用Telephone那个方法,由于Telephone是一个抽象类,他不能实例化,即不能new Telephone,但是可以用于做参数,参数未实例化,所以我们可以这样写,但是,我们在使用的过程中,会遇到问题,因为我们不能形成相应的实例。
在这次学习中,我们应该注意一下几点:
1、接口可以继承多个接口(interface 接口名 extends 接口1,接口2)
2、类可以实现(implements)多个接口,只能继承一个类(extends)
3、接口只定义了方法(还不能实现),而abstract class中可以拥有函数实体
4、通过abstract class实现接口,而类又继承abstract类,这种方式,成为适配器模式,可以节省类在实现接口时候反复定义。接口->抽象类(过渡)->子类
5、接口和抽象类都不可实例化
6、接口只有常量和抽象方法,抽象类可以有一般方法、抽象方法、变量、常量
-----------------------------------------------------------------------------------------------------------------
还有很久才能下课..........