快捷搜索:  汽车  科技

uml结构图讲解(概述耦合UML)

uml结构图讲解(概述耦合UML)public class Son extends Father { public void speaking(List list) { System.out.println("子类: " list.get(0)); } } 复制代码测试类 Testpublic class Father { public void speaking(ArrayList arrayList) { System.out.println("父类: " arrayList.get(0)); } } 复制代码子类 Son③ 当子类的方法重载父类的方法时,子类方法的前置条件(即方法的输入参数)要比父类的方法更宽松这里要注意,我们说的是重载,可不是重写,下面我们按照里氏替换原则要求的,将父类方法参数范围设小一点 (Ar

子类 Son

public class Son extends Father { public void playGuitar () { System.out.println("这是Son类playGuitar方法"); } } 复制代码

uml结构图讲解(概述耦合UML)(1)

测试类 Test

public class Test { public static void main(String[] args) { // 直接调用父类运行的结果 Father father = new Father(); father.speaking("speaking方法被调用"); // Son子类替换父类运行的结果 Son son = new Son(); son.speaking("speaking方法被调用"); son.playGuitar(); } } 复制代码

uml结构图讲解(概述耦合UML)(2)

运行结果:

父类: speaking方法被调用 父类: speaking方法被调用 这是Son类playGuitar方法

③ 当子类的方法重载父类的方法时,子类方法的前置条件(即方法的输入参数)要比父类的方法更宽松

这里要注意,我们说的是重载,可不是重写,下面我们按照里氏替换原则要求的,将父类方法参数范围设小一点 (ArrayList) ,将子类同名方法参数范围写大一些 (List) ,测试后的结果,就是只会执行父类的方法,不执行父类重载后的方法(注:参数名虽然相同,但是类型不同,还是重载,不是重写)

父类 Father

public class Father { public void speaking(ArrayList arrayList) { System.out.println("父类: " arrayList.get(0)); } } 复制代码

uml结构图讲解(概述耦合UML)(3)

子类 Son

public class Son extends Father { public void speaking(List list) { System.out.println("子类: " list.get(0)); } } 复制代码

uml结构图讲解(概述耦合UML)(4)

测试类 Test

public class Test { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("speaking方法被调用"); // 直接调用父类运行的结果 Father father = new Father(); father.speaking(arrayList); // Son子类替换父类运行的结果 Son son = new Son(); son.speaking(arrayList); } } 复制代码

uml结构图讲解(概述耦合UML)(5)

猜您喜欢: