java中的继承
之前我们了解过了什么是类,什么是对象,那么我们就来深入了解一下什么是继承和多态
继承
是什么?
我们可以顾名思义,这个词的意思我们并不陌生那这个继承在Java中是如何体现的呢?首先假如你定义了两个类,一个是cat,一个是dog,cat和dog都会有他们的名字吧,都会有年龄吧,这些你都在类里面定义了,那么我们是否可以把这些都归结到一个类类里面去是可以的,我们再定义一animal的类来汇总这些共有的特征,然后再由其他类来继承
父类和子类
子类继承父类,被继承的就是父类,例如我刚刚所说的animal这个类,就是dog和cat这两个类的父类,当子类继承父类之后,父类的成员方法和成员变量都会被子类所继承,我这里没说构造方法是因位它有点特别,后面会提到。
补充:父类也叫超类,基类;子类也叫派生类,扩展类。只不过父类和子类是我觉得顺口的读法、
如何去继承
这里直接用图片效果会更好,通过子类estends父类继承,这样就可以达到继承的目的,简洁明了
如何访问成员
通过子类创建的对象也是可以直接访问父类的成员的
可以看上面两幅图,父类的name可以直接通过dog.name来访问,当然成员方法也是同理,不过你们或许会发现我使用了构造方法,是的,当父类中存在构造方法是=时,要先给父类的构造方法赋值,我们要在子类中也创建构造方法,构造方法之间的相互引用要用到this,肯定有人会好奇为什么我这里使用的是super,我下面来单独解释这两个
this和super
其实没那么多弯弯绕绕,我直接通俗一点,this可以把他当成指向子类成员和父类成员,而super特指父类成员,当子类和父类没有重名的成员变量时,this就都可以指向,但是一旦有重名时,this会指向子类而不是父类,这时候就只能用super,父类的构造方法,要用super来引用,当成员方法同名时,如果直接访问,只能访问到子类而不是父类
可以看到引用的是子类的bark而不是父类的
继承与组合
继承类似于小类是大类的意思,而组合是大类包含类的意思,这么说有点抽象,我来举个例子,汽车有发动机吧,但我们不能说发动机是汽车吧,发动机是汽车的组成部分,这两个关系就可以是组合,下面图很好的对比了二者的区别
结语
本来我想将多态一并说完,但我觉得和抽象类接口放在一起或许会更好,那我们就下一篇见吧,如果我有说错的地方,还请大佬指出,共同进步