Java面向对象的总结 续

首先创建一个父类,FatherBasic类。建立三个方法。


Java面向对象的总结 续_第1张图片
FatherBasic类

然后创建子类,继承父类。重写父类的方法。

意思是:父类里有一些基本的方法,新建的子类根据老板的要求,重写相应方法。

public class Son_1 extends FatherBasic{

public void fun1(){

System.out.println("第一代版本 调用子类方法1");   }

public void fun2(){

System.out.println("第一代版本 调用子类方法2");   }   }

最后创建测试类

意思是:测试类相当于一个模块,真实项目中会很多这样的类,执行程序的结果


Java面向对象的总结 续_第2张图片
Test类

       很好,按照老板的要求做完了。(没有出现问题)然后,客户“想到了”好的点子,希望加进去。为了客户满意,老板想都没想满口答应。对手下说:改!

      写代码要比改代码容易。

      为了防止客户“良心”发现,想改回去。这是第一个子类作备份,再创建第二个子类。Son2

public class Son_2 extends FatherBasic{

public void fun1(){

System.out.println("第二代版本 调用子类的方法1"); }

public void fun2(){

System.out.println("第二代版本 调用子类的方法2");}}

    好了,每个test类里的方法都是写好的。修改 指向的子类对象即可。


Java面向对象的总结 续_第3张图片

        有很多类似的测试类,需要调用子类的方法。每个类创建的对象都要修改,重复性的修改。并且一个个的翻找类,看谁调用了,一个也不能漏掉。

        老板看了看,说:很好。

        员工们笑笑不说话。

        客户对比了后,发现还是原来的好,问能不能改回来。

        老板。。。 员工。。。。

        在这里出现的需求是,有很多测试类要调用子类的方法,当需要不同子类的方法时,就要修改所有要调用的对象,也就是构造方法。为此,提出一种解决方案。

        不改动所有的类,新创建一个工厂类,factory类。用这个类来创建对象。

Java面向对象的总结 续_第4张图片
factory类

        至于为什么要用父类FatherBasic为返回类型,让我们再看一下test类新的写法。

Java面向对象的总结 续_第5张图片
Test类

    调用静态类factory里创建对象的方法,用父类FatherBasic指向。父类的引用指向子类对象。虽然这个对象是子类对象,但使用的是父类继承的属性和方法,优先调用子类重写父类的方法。这就是Java的多态。

    最重要的是,不论客户再有什么修改,只需要修改工厂类里的返回值,往下所有的test类都会跟着修改。减少了重复劳动,Java多态的优势就体现出来了。这个简易的例子就是,工厂模式。

static关键字         final关键字

下面要提写代码常用的两个修饰符

static:静态。可以修饰代码块,方法,属性。

①静态方法和属性指向类,可以不用创建对象直接通过类调用方法。

②静态方法不能调用非静态成员

③静态属性仅在类加载时被初始化

final:修饰符

①修饰类:最终类,不可被继承。也就是类的属性和方法不能被重写

②修饰方法:最终方法,方法不可被重载、重写

③修饰属性:最终属性,只能赋值一次,不可更改

    在复习Map集合框架的期间,遇到很多问题,其中的键值之间的运用不够熟练,会在后续重点总结一下其中的概念,原理和难点。下一篇会对Java面向对象进行一个扫尾工作。

你可能感兴趣的:(Java面向对象的总结 续)