您的位置:首页 > 编程语言 > Java开发

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

2015-07-02 23:18 405 查看
大学时期觉得面向对象思想之类基础课程没什么卵用,最近维护一些老项目才发现,尼玛,以前觉得没用是因为身边的人基本都会,当你身边的人不会时你就会觉得很有用了。不会面向对象的人要实现多个略有不同的功能时往往是直接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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息