java接口类型的多态行为练习
2013-12-07 21:45
309 查看
首先是接口类
然后是TV类
下面是DVD类,它和TV类基本相似,不过少了屏幕大小的参数
最后是调用的Try类里面的主函数
下面是结果图
心得体会:感觉和c++差别很小,难度不是太大。
public interface jiekou{ boolean powerOnOff(); //返回当前状态,关还是开 int volumeUp(int increment); //调大音量 int volumeDown(int decrement);//调低音量 void mute(); //静音 int setChannel(int channel); //返回当前频道 int channelUp(); //频道+1 int channelDown(); //频道-1 }
然后是TV类
import static java.lang.Math.max; import static java.lang.Math.min; public class TV implements jiekou{ //创建TV类 public TV(String user, int screensize){ //构造函数 this.user=user; this.screensize=screensize; } public boolean powerOnOff(){ //实现接口powerOnOff,在TV类中 power=!power; System.out.println(user+" "+screensize+" inch TV power "+(power? "on.":"off.")); return power; } public int volumeUp(int increment){ //实现接口调大音量 if(!power){ return 0; } volume += increment; volume = min(volume,MAX_VOLUME); System.out.println(user+" "+screensize+" inch TV volume level: "+volume); return volume; } public int volumeDown(int decrement){ //实现接口调小音量 if(!power){ return 0; } volume -=decrement; volume = max(volume,MIN_VOLUME); System.out.println(user +" "+screensize+" inch TV volume level: "+volume); return volume; } public void mute(){ //实现接口静音 if(!power){ return; } volume =MIN_VOLUME; System.out.println(user+" "+screensize +" inch TV volume level: "+volume); } public int setChannel(int newChannel){ //实现接口返回当前频道 if(!power){ return 0; } if(newChannel>=MIN_CHANNEL && newChannel<=MAX_CHANNEL) channel = newChannel; System.out.println(user +" "+screensize +" inch TV turned to channel: "+channel); return channel; } public int channelUp(){ //实现接口频道+1 if(!power){ return 0; } channel= channel<MAX_CHANNEL ? ++channel : MIN_CHANNEL; System.out.println(user +" "+screensize+" inch TV turned to channel: "+ channel); return channel; } public int channelDown(){ //实现接口频道-1 if(!power){ return 0; } channel = channel>MIN_CHANNEL ? --channel : MAX_CHANNEL; System.out.println(user +" "+screensize+" inch TV turned to channel: "+ channel); return channel; } private String user = null; private int screensize = 0; private boolean power = false; private final int MIN_VOLUME = 0; private final int MAX_VOLUME = 100; private int volume = MIN_VOLUME; private final int MIN_CHANNEL = 0; private final int MAX_CHANNEL = 999; private int channel = MIN_CHANNEL; }
下面是DVD类,它和TV类基本相似,不过少了屏幕大小的参数
import static java.lang.Math.max; import static java.lang.Math.min; public class DVD implements jiekou{ //创建DVD类 public DVD(String user){ //构造函数 this.user=user; } public boolean powerOnOff(){ //实现接口powerOnOff,在DVD类中 power=!power; System.out.println(user+" DVD Player power "+(power? "on.":"off.")); return power; } public int volumeUp(int increment){ //实现接口调大音量 if(!power){ return 0; } volume += increment; volume = min(volume,MAX_VOLUME); System.out.println(user+" DVD Player volume level: "+volume); return volume; } public int volumeDown(int decrement){ //实现接口调小音量 if(!power){ return 0; } volume -=decrement; volume = max(volume,MIN_VOLUME); System.out.println(user+" DVD Player volume level: "+volume); return volume; } public void mute(){ //实现接口静音 if(!power){ return; } volume =MIN_VOLUME; System.out.println(user+" DVD Player volume level: "+volume); } public int setChannel(int newChannel){ //实现接口返回当前频道 if(!power){ return 0; } if(newChannel>=MIN_CHANNEL && newChannel<=MAX_CHANNEL) channel = newChannel; System.out.println(user +" DVD Player turned to channel: "+channel); return channel; } public int channelUp(){ //实现接口频道+1 if(!power){ return 0; } channel= channel<MAX_CHANNEL ? ++channel : MIN_CHANNEL; System.out.println(user +" DVD Player turned to channel: "+ channel); return channel; } public int channelDown(){ //实现接口频道-1 if(!power){ return 0; } channel = channel>MIN_CHANNEL ? --channel : MAX_CHANNEL; System.out.println(user +" DVD Player turned to channel: "+ channel); return channel; } private String user = null; private boolean power = false; private final int MIN_VOLUME = 0; private final int MAX_VOLUME = 100; private int volume = MIN_VOLUME; private final int MIN_CHANNEL = 0; private final int MAX_CHANNEL = 999; private int channel = MIN_CHANNEL; }
最后是调用的Try类里面的主函数
import static java.lang.Math.random; public class Try{ public static void main(String args[]){ jiekou jie = null; for(int i=0 ; i<5 ; ++i){ if(random()<0.5) jie=new TV(random()<0.5 ? "Sony" : "Hitachi", random()<0.5 ? 46 : 40); else jie=new DVD(random()<0.5 ? "Panasonic": "JVC"); jie.powerOnOff(); jie.channelUp(); jie.volumeUp(10); } } }
下面是结果图
心得体会:感觉和c++差别很小,难度不是太大。
相关文章推荐
- java匿名内部类,多态,接口练习
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- 编码练习——Java-5-接口、继承与多态
- 编码练习——Java-5-接口、继承与多态
- [疯狂Java]泛型:类型参数多态问题、类型通配符(?)、类型通配符的上下限、类型参数的上限(类、接口)
- Java 基础一些代码练习笔记(继承+接口+多态)
- java基础(2)-基础类型和语法(static、内部类、final、抽象类、接口、封装)(并将这些基础知识与java的三大特征关联(继承、多态、封装))
- 我们神码小组第一次合作完成的java项目——类的多态继承与接口的使用练习。
- JAVA中几个易混淆关键词的理解:行为,隐藏,组合和继承,覆写和重载,多形(多态)性,动态绑定,上溯造型,抽象类,接口
- 继承,接口,多态练习java
- 黑马程序员——java中构造函数、继承、多态、接口总结
- [Java] 构造器内部的多态方法行为
- 学习笔记——Java核心技术之接口、继承与多态练习题
- Java语言中:++a与a++小练习 &与&&小练习 |与||小练习 boolean类型小练习
- java 继承与多态练习题目
- 漫谈Java语言的接口与类型安全
- 提高Java代码重用性的措施三:选择最简单的参数接口类型
- Java学习第六_八天:面向对象__继承_接口_多态
- Java初学习 - 多态和实现接口的类的对象赋值给接口引用的方法
- thinking in java 多态,接口,内部类,异常小结