多态小案例
来源:互联网 发布:马天宇女装知乎 编辑:程序博客网 时间:2024/05/24 04:30
下面有两个小程序,第一个没有使用多态,两个小程序里边都有三个类,类稍微多一点才能看出使用多态的优点:
1.不使用多态每次打印,首先要在Person类里面构造该类型的打印机的方法,参数就是你要用什么打印机的类的对象,该方法的输出就是个该对象调用打印机的方法,在Test类中使用Person类的对象调用Person类中的方法;
2.使用多态可以把所有打印机这个类的对象作为Person类的参数,所以需要新创建一个打印机的类,包括是3D打印机还是黑白打印机,这样,每次要打印我只给它一个什么打印机的类的对象就行了,该对象代替了原来的具体的打印机类的对象,不用每次都创建一个方法,代码量减少,实现代码的代码块。
3.多态使用到了abstract标识符,来修饰类,并且该类中的方法也没必要实现,因为它是抽象类,必须要被继承,子类如果是非抽象类,必须实现该抽象类的所有方法,如果是抽象类,不必要实现所有的方法。
class ColorfulPrinter
{void print(){
System.out.println("彩色打印机打印内容");
}
}
class BlackPrinter
{
void print(){
System.out.println("黑白打印机打印内容"); //输出黑白打印机打印内容
}
}
class ThreeDPrinter
{
void print(){
System.out.println("3D打印机打印内容"); //输出3D打印机打印内容
}
}
class Person
{
void usePrinter(ThreeDPrinter printer){
printer.print();
}
void usePrinter(ColorfulPrinter printer){
printer.print();
}
void usePrinter(BlackPrinter printer){
printer.print();
}
}
class Test
{
public static void main(String[] args)
{
Person jack = new Person();
BlackPrinter black = new BlackPrinter();
jack.usePrinter(black);
ColorfulPrinter color = new ColorfulPrinter();
jack.usePrinter(color);
ThreeDPrinter three = new ThreeDPrinter();
jack.usePrinter(three);
}
}
//使用多态
class ColorfulPrinter extends print5er
{
void print(){
System.out.println("彩色打印机打印内容");
}
}
class ColorfulPrinter extends print5er
{
void print(){
System.out.println("彩色打印机打印内容");
}
}
class ThreeDPrinter extends print5er
{
void print(){
System.out.println("3D打印机打印内容");
}
}
class Person
{
void usePrinter(print5er printer){
printer.print();
}
}
class Test
{
public static void main(String[] args)
{
Person jack = new Person();
BlackPrinter black = new BlackPrinter();
jack.usePrinter(black);
ColorfulPrinter color = new ColorfulPrinter();
jack.usePrinter(color);
ThreeDPrinter three = new ThreeDPrinter();
jack.usePrinter(three);
}
}
abstract class print5er
{
abstract void print();
}
class Person
{
void usePrinter(print5er printer){
System.out.println("人在使用打印机");
printer.print();
}
}
- 多态小案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 案例
- 成功案例
- 案例学习
- Sales 案例
- 新东方案例
- Openlaszlo案例
- MDX案例
- MDX案例
- 案例分析
- 管理学案例
- bug宝典Linux篇 kill 命令
- RHCE认证过程
- Manacher算法
- 11. Container With Most Water
- 关于Https安全性问题、双向验证防止中间人攻击问题
- 多态小案例
- ubuntu git安装及使用
- Parallel Reduction --- (4) Free Loops
- MethodSwizzling
- string拼接字符串stringbuider和stringbuffer的区别
- Masonry多个控件的等间隔排序显示
- 梁启超家书致思成书-安之若命
- 字符设备三个重要的结构体
- Java动态代理--CGLib实现