【定义】所有引用基类的地方必须能透明地使用其子类的对象。
【关键点】
示例:
public class C { public int func(int a,int b){ return a+b; } } public class C1 extends C{ @Override public int func(int a,int b) { return a-b; } } public class Client{ public static void main(String args) { C c = new C1(); System.out.println("2+1=" + c.func(2,1)); } }
public class C { public int func(int a,int b){ return a+b; } } public class C1 extends C{ public int func2(int a,int b) { return a-b; } } public class Client{ public static void main(String args) { C1 c = new C1(); System.out.println("2-1=" + c.func2(2,1)); } }
运转成果:2-1=1。
import java.util.HashMap; public class Father { public void func(HashMap m){ System.out.println("履行父类..."); } } import java.util.Map; public class Son extends Father{ public void func(Map m){//方式的形参比父类的更宽松 System.out.println("履行子类..."); } } import java.util.HashMap; public class Client{ public static void main(String args) { Father f = new Son();//援用基类的处所能通明地利用其子类的工具。 HashMap h = new HashMap(); f.func(h); } }
运转成果:履行父类...
import java.util.Map; public abstract class Father { public abstract Map func(); } import java.util.HashMap; public class Son extends Father{ @Override public HashMap func(){//方式的返回值比父类的更严酷 HashMap h = new HashMap(); h.put("h","履行子类..."); return h; } } public class Client{ public static void main(String args) { Father f = new Son();//援用基类的处所能通明地利用其子类的工具。 System.out.println(f.func()); } }
履行成果:{h=履行子类...}