继承是面向对象编程的核心特点,又称为拓展,顾名思义,可以在现有类的基础上扩充新的属性和方法,其隐含的含义是扩展后的类同时也具有被扩展类的属性与方法。一个类从另一个类扩展而来,它就具有原有类的相关属性与方法,调用父类的这些方法就像调用该类自己的方法一样,从方法调用的形式上看,调用父类的方法与调用自己的方法并没有什么不一样。
学习继承的知识首先你要理解this关键字。
每个无参函数都默认有this和super两个隐式参数。显式参数存在于方发声明中的括号里,隐式参数括号里没有写用this.修饰,有时这个修饰也会被省略。
简单来说,this就是指对象变量中所指称的对象。在设计类时,当我们需要表示对象本身,或是对象所有的各种资源时,我们就需要一个方式或是代号来指称这个尚不存在的对象本身。简言之,java中以this来代表类未来会产生的对象类的使用方法,(1)资源区分,在定义类时我们可以用this来作对象资源和其他资源之分。this.c=c,左边被this指代的c是对象变量,右边的c来自参数列表。this关键字存在的意义就是因为java就近原则使得如果不用this关键字等号左右两边的c就有可能被认为都来自参数列表(2)使用构造函数,this也可以用来调用一个类中的其他构造函数,这种情况通常发生在构造函数的功能大致相同时,可以将大部分的初始化逻辑设计在一个构造参数中,而其他的构造函数则只需直接以this来调用具有特殊功能的构造函数。在使用this语句构造 函数时,要注意:
- 通过this语句调用构造函数只能够在构造函数中使用,绝不可以在一般的方法中引用。
2.在构造函数中的this语句一定要置放在构造函数中的第一行。否则会导致文法错误发生。
(3)代表自己。this在类中可以代表自己,即未产生的对象本身。直接以this代表对象本身的地址。
再来看super关键字。
对于被覆盖(private限定词修饰)的方法,super用来提供子类调用父类中被覆盖的方法。SuperClass用来称呼父类,SubClass用于称呼子类。
super的用法(1)调用超类的方法(2)调用超类的构造器。
子类不继承父类的构造方法,因此如果子类想使用父类的构造方法,必须在子类的构造方法中使用,并且必须用super关键字来表示。super和this不能都用,因为它们都要求必须是子类构造方法的第一句。
再来介绍子类的继承性。如果子类和父类在同一个包中,那么,子类自然地继承了父类中不是private的成员变量和方法,权限保持不变。如果父类和子类不在一个包中,那么,子类继承了父类的protected,public成员变量和方法,权限保持不变,子类和父类不在同一个包中,子类不能继承父类的友好变量和友好方法。友好,就是不被public,private这些词修饰,只能在同一包内被使用。
继承的内容还有很多,鉴于还没学到,就先总结到这里。