在学习Java程序设计基础的时候,最开始接触的就是Java的四大基础特性:抽象、封装、继承还有多态。虽然掌握了这几个特性的使用方法,但是在项目中软件的设计中考虑到使用Java的多态性,还是需要一定的经验去判断。该博客是在实习过程中对代码设计的一些学习想法。
Java多态性
多态是同一个行为具有多个不同表现形式或形态的能力。具体来说,多态就是同一个接口,使用不同的实例而执行不同操作。比较常用的做法就是用父类引用指向子类对象,由于子类重写了父类的一些方法,该引用调用这些方法的时候使用的是子类的方法。
例:
class Father {
private int age = 40;
public int getAge() {
return age;
}
public void say() {
System.out.println("I'm father");
}
}
class Son extends Father{
private int age = 16;
@Override
public void say() {
System.out.println("I'm son");
}
public void play() {}
}
public class Main{
public static void main(String[] args) {
Father father = new Son();
System.out.println(father.getAge()); //输出40
father.say(); //输出I'm son
// father.play() 无法完成编译
}
}
如代码所示,当父类引用指向子类对象时,父类引用的实例变量的值是父类的值,但是调用的方法却是子类重写的方法。基于这个特性,在项目的设计上可以先将每个模块的通用方法都写在一个抽象类AbstractClass里,对应模块下的类继承该抽象类并重写下面相应的代码。当需要对该模块的类进行批量操作的时候,就通过使用AbstractClass引用来指向其所有的子类,通过使用通用方法来做到批量访问。