Java基础:继承
读者老爷们大家好,今天图图带大家了解一下java基础里的继承。
首先确定一下我们今天的学习的三个目标。第一个是类的继承;第二个是访问控制权限;第三个方法重写(覆盖)override。好滴,话不多说,让我们快乐的投身知识的海洋里吧!
Java面对的对象呢有三大基本特征,分别是封装,继承,多态。今天我们说的就是其中之一:继承。继承是Java面向对象的重要特征之一,它的原理就是将公共的这些个属性啊方法啊,给它抽取出来,之后呢,形成父类(公有类),然后通过继承,子类就将自动具有了父类的属性与方法,从而达到类的简化,达到代码复用的目的。从上面的原理中不难看出,继承的优点就在于能把设计简化处理,能把我们敲写的代码复用。还能让我们站在巨人的肩膀上,子类可以扩充父类没有的属性和方法。扩充的多了,自然而然就能满足更多的需求。
一直在说子类,父类。那到底什么叫子类?什么叫父类呢?他们又都有什么限制什么特征呢?我们来简单看一下。
通常我们把实现继承的类,也就是继承者,称为子类,也叫派生类,而被继承的类,也就是贡献者,称为父类,也叫超类或基类。在权限允许的前提下,通过继承,子类可以使用父类中的方法和变量。这里要注意的是,并不是所有都能继承,可以继承的包括普通方法和属性,但是构造器、私有方法则不能被继承。而Java类只支持单根继承,不允许多重继承,通俗的说也就是一个儿砸只能有一个老爹,而一个老爹则可以有很多儿砸。就是这么的浅显易懂,一目了然~
这就是单根继承的图,供读者老爷们参考。
继承的实现:使用extends关键字:public class Dog extends Animal {
}
有子类,父类,也有最高父类:object类。Object类是所有Java类的根父类,也就是最高父类,任何一个java类(class)都直接或者间接继承Object类,通俗地讲它就是祖宗。只要是在类声明中未使用extends的关键字来表明其父类,那么默认的父类都是Object类
public class Person {
...
}
==》
public class Person extends Object {
...
}
接下来说一下super关键词的应用以及作用。首先大家要知道,super指的是父类的组成成员,那么它的应用场景就是当想要调用父类中的同名属性,方法,构造方法时,可以使用super关键字。它是访问父类中定义的一种属性,在非静态的情况下,调用父类中定义的成员。而他的作用就是用于在子类构造器中调用父类对应构造器。
那么super有哪些需要注意的事项呢?我们接着往下看。
super只能在成员方法和构造方法中使用,不能在静态方法中使用,super()调用父类构造方法,只能在子类构造方法中,而且呢必须放在第一行。super()可以通过传参,调用父类重载的构造方法。子类构造方法中,默认会调用父类无参构造方法。
那么我们可以想一下这三个问题。
在构造方法中,super(...)和this(...)可以同时出现吗?
如果父类中显式定义了一个有参构造方法,子类中的构造方法中可以不写super()也不写this()吗?
this和super有何异同?
带着疑问,我们继续学习继承中的构造方法。创建子类对象时,必须先显式或隐式地调用其父类的构造方法
显式:子类可以在自己的构造方法中使用super(…)显式调用其父类对应参数的构造方法
隐式:如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参构造方法(如果此时父类没有无参构造方法,则编译出错)
看一下子类对象实例化的一个过程
我们在创建自类对象时,按顺序执行可以表现为:
父类static{}
子类static{}
父类{}
父类构造方法
子类{}
子类构造方法
最后,我们要知道,Java中,可以在类、属性、方法前面加上修饰符,从而进行访问权限的控制。
编辑不易,如果有什么写的不恰当的地方,请各位观众老爷们多多包涵,图图给各位抱拳了~~