------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
类的继承
面向对象有三个特征:封装,继承,多态。
类的继承是指:一个类a可以通过extend关键字继承另外一个类b。那么,a就是b的子类,b则是父类,或者是超类,基类。
继承的好处是:
1.提高代码的复用性
2.使得类与类之间存在着联系,才有了类的多态性。
什么时候用到继承。
当多个类具有相同的属性时候,使用继承能够简化代码量,提高代码的复用性。但是要注意的是,类与类之间要有所属关系(is a)才适合继承,不能应为类a需要类b的某一些功能,才去继承。父类的所有属性,方法在子类中使用是符合常理的,这样才算是恰当的继承。
在java中,只支持单继承,但是支持多层继承
1.单继承可以提高程序的安全性。因为如果是多继承的话,多个基类有可能会有相同的方法,在子类调用的时候,系统会不能辨认是哪个方法。
2.多层继承,也是一个继承体系。类a是类b的父类,类b是类c的父类,那么类c也是继承类a。那么,如果我们想去了解类c是做什么用的,我们就可以先去看一下类a的代码,因为类a是多个类相同的属性集合。所以可以更好的看清类c的作用。
3.在类的继承中,子类可以重写父类的方法,也可以直接调用父类的方法。重写父类的方法之后,子类在调用该方法时,系统就会直接找子类的方法,而不会去找同名的父类方法
4.关键字:this,super。它们都是用于指向对象的地址。This代表本类的对象,super则代表父类的对象。
5.在创建子类的对象的时候,子类的构造函数会先调用父类的构造函数,然后再执行自己的代码。
Class A{
Public A(){
System.out.println(“这是基类的构造函数”);
}
}
Class B extends A{
}
Main()
{
B b=new B();
运行结果为:
这是基类的构造函数
6.子类要重写父类,要保证子类的权限大于等于父类。相当于父类的方法是 protected void show(),子类重写时候必须是public/protected void show()
子父类在内存中运行的情况
子类在继承父类之后,子类在创建对象的时候,会将子类和父类加载到内存中。而子类的对象加载到堆中的时候会将父类中不是私有,静态的变量一同加载到。
抽象类的继承
当一个类中存在一个或多个抽象函数的时候,该类一定要定义为抽象类。
抽象类用修饰符abstract来定义。Abstract可以用于类和类的成员函数。继承抽象类的子类必须重写抽象类的所有抽象方法,否则,该类还是抽象类。抽象类是不能实例化的。
什么时候用抽象类。抽象是一个模糊的概念。所以,抽象类的一个方法,在不同的子类中有着不同的实现方法。这时候就可以用抽象类。也可以理解为,当多个类有相同的功能,但是功能的内容不同的时候,可以进行向上提取,抽取的是功能的定义,不抽取功能的方法。在抽象类中定义为抽象方法,由子类根据不同的情况来重写。