java 子类继承父类属性 this打点调用初始化父类属性 父类中无有参构造方法

接口:

实现类1:

实现类2:

抽象类:

子类1:

子类2:

测试类:

在抽象类中我没有通过构造方法为其属性初始化赋值,而是在子类中通过this.父类属性 为父类属性赋值,测试结果和在抽象类中通过有参构造方法为其属性赋值且在子类构造方法中用super调用父类构造方法的结果相同,请问前者(也就是图片中的方法)的写法和后者运行效率上有什么区别?哪种写法更好更规范?谢谢O(∩_∩)O

区别不大

因为所有类如果没声明构造方法,默认是有个无参数构造方法

所以图片中其实是这样的,以子类BomBird构造为例子

public BomBird(ShoutAbility shout_ability)
{
    super();//默认这里是省略的但是前提是父类有无参数构造方法
    this.shout_ability=shout_ability;//子类继承父类所以可以用this,你也可以super.shout_ability=shout_ability;
}

你说的后者写法也没错,效率没有太大区别

写法可以有很多,但是不能说一定要怎么写,多方面考虑

但是更好的是对父类的封装,抽象为父类是为了封装一系列共有通用属性,变量因情况而定可以是private protected修饰,提供set和get方法,这个东西现在没法说清楚,不同的代码环境有不同的写法,只有慢慢积累,你每个写法都要知道,以后在工作中,代码扩展中自然能看出各种写法优劣,才能更面向对象,更具有扩展性!

比如接口定义行为标准,这些东西不是一下就能让你明白的,

欲速不达的道理,主要是平时自己多写写,多看看其他成功代码,想下别人为什么这样写,为什么不那样写,各个的优缺点,慢慢积累


温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-11
这个写法更多应该考虑的是面向对象的封装思考,不应该暴露父类封装的成员和实现的细节,应该将那个变量设置为private。
至于效率上:1,有差别也不大
2,不会是性能的瓶颈。
相似回答