一句话概括
封装: 将 属性 方法 封装到 类里
继承: 通过extends 实现父类子类的继承关系
多态: 通过父类声明, 不同的子类进行实例化
先用父类声明对象
通过一个 类方法(****Factory ) 提供不同的实例化对象
感觉 这个小小的简单工厂就是 三种特性的 具体表现
例子1
二则运算代码 面向过程
package CalculatorV1;
import com.sun.org.apache.xerces.internal.impl.xs.SchemaNamespaceSupport;
import java.util.Scanner;
/*
面向过程编程, 没啥特点, 不能不用, 耦合度高
*/
public class Calculator {
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("输入数字A");
int A=scanner.nextInt();
System.out.println("输入操作符B( + - * /)");
String B=scanner.next();
System.out.println("输入数字C");
int C=scanner.nextInt();
int D=0;
if(B.equals("+")){
D=A+C;
}
else if(B.equals("+")){
D=A+C;
}
else if(B.equals("+")){
D=A+C;
}
else if(B.equals("+")){
D=A+C;
}
System.out.println(A + B + C + " = " + D);
}
}
例子2
实现/继承
父类
public interface Operation {
public int getResult(int NumberA, int NumberB);
}
子类一
public class OperatorPuls implements Operation {
@Override
public int getResult(int NumberA, int NumberB) {
int NumberC=NumberA + NumberB;
return NumberC;
}
}
多态
通过父类声明
在通过子类实例化
public class OperationFactory {
public static Operation GetOperator( String Operation)
{
Operation operation=null;
switch(Operation)
{
case "+":
operation= new OperatorPuls();
break;
case "-":
operation= new OperatorMinus();
break;
case "*":
operation= new OperatorMultiply();
break;
case "/":
operation= new OperatorDiv();
break;
}
return operation;
}
}
main方法
通过不同的运算符, 实例化不同的对象, 再进行计算
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
System.out.println("输入数字A");
int NumberA=scanner.nextInt();
System.out.println("输入操作符( + - * /)");
String operator=scanner.next();
System.out.println("输入数字B");
int NumberB=scanner.nextInt();
Operation operation= OperationFactory.GetOperator(operator);
int NumberC=operation.getResult(NumberA, NumberB);
System.out.println(NumberA + operator + NumberB + " = " + NumberC);
}