摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢!
一.前言
小朽不才,最近爱上了听古典音乐收录了,mozart ,贝多芬…等好听的歌很是喜欢。戴上耳机,打开电台,整理下java继承。
总结如下:
二. 继承(extends)
从编码中,咱们总是在不知不觉的用继承,明确的调用,或是隐式的调用了java根类Object。什么是继承?官方上说,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。对我来说,继承就像古典音乐,来自音乐,却可有所不同。这就是说,古典音乐 extends 音乐
音乐类:Music.java
public class Music { private String name; private String kindName; private String description; /* ignore get/set methods of the parameters above*/ public void play(){ System.out.println(" music is playing"); } }
上面定义了音乐的一些属性成员 和 方法
古典音乐 :ClassicalMusic.java
public class ClassicalMusic extends Music { public static void main(String[] args) { ClassicalMusic classicalMusic = new ClassicalMusic(); classicalMusic.setName("I am ClassicalMusic"); classicalMusic.setKindName("Classical Music Kind"); classicalMusic.play(); } }
#ouputs : music is playing
上面 古典音乐继承了音乐,通过继承,ClassicalMusic类叫做衍生类(derived class)。被继承的类Music类称为基类(base class)。所描述的关系是“is-a”关系。
使用继承需要记住的几点:
- 继承可以达到复用代码的方法。这就像一把双刃剑,用的好就好,用的不好就不好。在合适的地方用会更好
- 子类可以访问基类非private的属性和方法。
- 自然,子类也有权利申请自己需要的方法。那就是下面的 Mehtod
Overriding
古典中寻找真谛,正如java继承中吹出古典味
三.方法覆盖(Mehtod Overriding)
在继承中,this 和 super是常见的关键词,super可以让我们很方便的调用到基类的方法或者构造器。在古典音乐中,我们加入属于他自己的播放方法。
@Override public void play(){ super.play(); System.out.println(" but the Music is ClassicalMusic"); } #outputs: music is playing but the Music is ClassicalMusic
最常见到的代码,就是各个DAO层对基类DAO层的实现。
四.protected
对于protected而言,它指明就类用户而言,他是private,但是对于任何继承与此类的子类而言或者其他任何位于同一个包的类而言,他却是可以访问的。在项目中,SpringMVC
Controller 的基类中存在对 日志,请求,响应,会话,还有service层的声明。
protected,就像保护着孩子的音乐细胞一样。只能让美好的,特定的音乐去访问。每个人都有每个人独特的品味,就像你mp3,或是手机里的音乐。那个属于你的去访问你音乐的细胞。
五.向上转型
is-a 的关系,表示古典音乐是属于音乐。它可以在广义上称为音乐,自然当一个人不懂古典音乐时,他完全可以把它当作音乐就ok了。把古典音乐当成音乐这就是向上转型。 其实我们第一个例子就用到了。
六.总结及参考文献[在此感谢]
http://www.cnblogs.com/chenssy/p/3354884.html
http://www.cnblogs.com/vamei/archive/2013/03/29/2982232.html
古典音乐 (java基础 继承)