简单例子: public class Test { public static void main(String[] args) { Base obj1 = getBase(); obj1.print(); Base obj2 = getBase("test"); obj2.print(); } public static Base getBase() { return new Base() { @Override public void print() { System.out.println("concrete implementation"); } }; } //another implementation public static Base getBase(String str) { class Sub extends Base { @Override public void print() { System.out.println("Another Implementation"); } } return new Sub(); } }abstract class Base { public abstract void print(); }
把楼上 的 加上注释 public class ReturnAbstract { //这方法返回一个抽象类的对象,这时要写一个子类 从抽象类继承; 最后是返回这个子类的对象 public static Base getBase(String str) { class Sub extends Base { @Override public void print() { System.out.println("Another Implementation"); } } return new Sub(); } //返回抽象类自己一个对象,这时要把原来没有实现 的方法实现 public static Base getBase() { return new Base() { @Override public void print() { System.out.println("concrete implementation"); } }; }
public static void main(String[] args) { Base obj1 = ReturnAbstract.getBase(); obj1.print(); Base obj2 = ReturnAbstract.getBase("test");//调用的时候 是多态,人家要求返回的是父类的对象,而你实际上是子类的对象 子类的对象实际上也是父类的对象 obj2.print();//调用子类的方法 }}abstract class Base { public abstract void print(); }
public class Test {
public static void main(String[] args) {
Base obj1 = getBase();
obj1.print();
Base obj2 = getBase("test");
obj2.print();
}
public static Base getBase() {
return new Base() { @Override
public void print() {
System.out.println("concrete implementation");
}
};
} //another implementation
public static Base getBase(String str) {
class Sub extends Base { @Override
public void print() {
System.out.println("Another Implementation");
}
}
return new Sub();
}
}abstract class Base { public abstract void print();
}
public class ReturnAbstract {
//这方法返回一个抽象类的对象,这时要写一个子类 从抽象类继承; 最后是返回这个子类的对象
public static Base getBase(String str) {
class Sub extends Base { @Override
public void print() {
System.out.println("Another Implementation");
}
}
return new Sub();
}
//返回抽象类自己一个对象,这时要把原来没有实现 的方法实现
public static Base getBase() {
return new Base() { @Override
public void print() {
System.out.println("concrete implementation");
}
};
}
public static void main(String[] args) {
Base obj1 = ReturnAbstract.getBase();
obj1.print();
Base obj2 = ReturnAbstract.getBase("test");//调用的时候 是多态,人家要求返回的是父类的对象,而你实际上是子类的对象 子类的对象实际上也是父类的对象
obj2.print();//调用子类的方法
}}abstract class Base { public abstract void print();
}
比如:Employee类里有salary, Workers的salary和Manager是不一样的,
等你工作了,你的项目经理就只写个抽象类Employee,里面有个抽象方法public double allSalary(参数列表);
你就的写Workers类的public double allSalary(参数列表){.......return ****}
写Manager类的public double allSalary(参数列表){.......return ****}哈哈,我瞎理解瞎说的。