Java基础之面向对象思想的重要性

大学时期觉得面向对象思想之类基础课程没什么卵用,最近维护一些老项目才发现,尼玛,以前觉得没用是因为身边的人基本都会,当你身边的人不会时你就会觉得很有用了。不会面向对象的人要实现多个略有不同的功能时往往是直接copy一个类,可能会原有的类,然后在里面改几句代码就实现了。关键是他们虽然继承了原有的类,但是他们并没有完全合并子类父类的公共代码,短时间内这样是没问题的,甚至效率比规范的继承的略高。但是时间一长这种后果就开始显现出来了,由于项目不断地修改,可能测出上面copy出来的子类有问题,然后就没有修改父类同样的代码。这种问题很隐秘,但是可能会相当致命,在某些情况下会导致程序崩溃。

比如说下面的代码,用Test3继承了Test4的代码,但是继承不够彻底,保留了一个变量 strTest,而在初始化时使用的是子类Test3的变量而不是父类的同名变量,但是调用方法处理的时候由于多态而调用了父类的方法,而父类的方法是使用自己的变量的,这个时候问题就来了,会报空异常。这个问题是因为编码人员不明白多态是针对方法的,不针对变量。尴尬项目里面居然出现了类似的问题,我十分震惊,而且还不少地方时用这中不彻底的继承来写的,看着这几十个危险的炸弹(类),我真心觉得无力吐槽。


<span style="font-size:14px;">public class Test3 extends Test4{
     protected String strTest;
     
     public Test3() {
            strTest= "5656687987";
     }
     
     public static void main(String[] args){
            new Test3(). outPutDate();
           
     }

}

import java.util.Date;
public class Test4 {
     protected String strTest;

     protected void outPutDate () {
            try {
                 System. out. println( strTest. length());
           } catch (Exception e ) {
                 e. printStackTrace();
           }
     }

}</span>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值