多态小案例

来源:互联网 发布:马天宇女装知乎 编辑:程序博客网 时间: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();
}
}

0 0
原创粉丝点击