Java中可扩展性的实现

Java中可扩展性的实现 

    在JAVA中程序的可扩展性的实现有两种,通过代码举例如下:

一、将基类类型作为参数类型,使用instanceof判断传入实参引用的所属类型,从而决定该执行那部分代码

public class TestSimpleExtend {
public static void main(String[] args) {
  TestSimpleExtend test = new TestSimpleExtend();
  Animal animal = new Animal("animalName");
  Cat cat = new Cat("catName","yellow");
  Dog dog = new Dog("dogNmae","black");
 
  test.method(animal);
  test.method(cat);
  test.method(dog);
}

public void method(Animal obj) {
  System.out.println("The animal's name is:" + obj.name);
  if(obj instanceof Cat) {
   Cat c = (Cat) obj;
   System.out.println("and its eyesColor is:" + c.eyesColor);
  }
  if(obj instanceof Dog) {
   Dog d = (Dog) obj;
   System.out.println("and its furlColor is:" + d.furlColor);
  }
}
}

class Animal {
String name;

//one-arg constructor
Animal(String name){
  this.name = name;
}
}

class Cat extends Animal {
String eyesColor;

//two-args constructor
Cat(String name,String eyesColor) {
  super(name);
  this.eyesColor = eyesColor;
}
}

class Dog extends Animal {
String furlColor;

//two-args constructor
Dog(String name,String furlColor) {
  super(name);
  this.furlColor = furlColor;
}
}

二、使用“动态绑定”机制,它是面向对象思想最核心的机制,能够实现的可扩展性也最优。

使用“多态”有3点要求:1、要有继承; 2、要用方法覆盖; 3、基类引用指向子类的对象。

public class TestPolymoph {
public static void main(String[] args) {
  Animal a = new Animal("animal");
  Cat c = new Cat("catName","yellow");
  Dog d = new Dog("dogNmae","black");
 
  Lady ly1 = new Lady("Miss.",a);
  Lady ly2 = new Lady("Mr.",c);
  Lady ly3 = new Lady("Mrs.",d);
 
  ly1.myPetEnjoy();
  ly2.myPetEnjoy();
  ly3.myPetEnjoy();
}
}

class Lady {
private String name;
private Animal pet;

Lady(String name,Animal pet){
  this.name = name;
  this.pet = pet;
}

public void myPetEnjoy() {
  pet.enjoy();
}
}
class Animal {
String name;

//one-arg constructor
Animal(String name){
  this.name = name;
}

public void enjoy(){
  System.out.println("叫....");
}
}

class Cat extends Animal {
String furlColor;

//two-args constructor
Cat(String name,String furlColor) {
  super(name);
  this.furlColor = furlColor;
}

public void enjoy(){
  System.out.println("猫叫....");
}
}

class Dog extends Animal {
String furlColor;

//two-args constructor
Dog(String name,String furlColor) {
  super(name);
  this.furlColor = furlColor;
}

public void enjoy(){
  System.out.println("狗叫....");
}
}

猜你喜欢

转载自liuwwww.iteye.com/blog/1848213