Java 继承、super() 关键字使用、super 和 this的区别

Java 继承、super() 关键字使用、super 和 this的区别

1. 继承

继承是子类使用 extends 关键字来继承父类获取相同的属性和方法,可以解决代码的复用性问题

继承的基本思想:父类的构造器进行父类初始化,子类的构造器进行子类的初始化

继承使用细节:

子类在使用父类的方法或属性时,不能直接访问使用 private 私有修饰符修饰的属性或方法,可以通过公共的方法来间接获取

子类的无参构造器会默认调用 super() 方法来调用父类的无参构造器,若父类没有无参构造器,子类需要手动调用父类的其他构造器

子类在使用 super() 或 this() 使用父类或本类的构造器,则需要放到构造器的第一行,并且 super() 和 this() 只能有一个,super() 默认在每个子类的构造器都会生成,不管写没写,系统自动会调用 super() 方法

Object 是所有类的父类,父类的调用不局限直接父类,将一直追溯到 最顶级的 Object 类

子类最多只能继承一个父类,如果想要多继承的话,则需要间接继承,即继承父类,父类继承其父类

继承必须满足 is-a 的逻辑关系,不能滥用继承

子类继承后使用属性的时候层次递增,先寻本类是否有此属性,若没有则向父类依次往后寻找,若期间碰到了私有属性则不能继续访问其他属性,如果需要访问私有属性,只能让此类提供公共方法让子类调用方法来访问

2. super 关键字

super 可以理解为对父类的引用,通过 "." 来获取父类的非私有的属性或方法

super 可以访问父类的构造器

子类继承父类需要调用父类方法时,当方法名都相同时,通过 super. 语法可以直接调用,这和直接或用this调用方法不同,后者当中这两个方式可以等价为一个方式,因为 this 和直接调用都是在本类当中开始寻找,之后依次递增到父类当中调用方法。如果方法名都不重名,则这 3 种方式都可以调用

super 不仅仅访问直接父类,若父类的上面还有相同的方法名则就近选择,继承的本质就是建立查找关系。

3. this 与 super 的区别

this 在调用方法或使用属性的时候都默认先从本类当中寻找是否存在,若不存在则从父级开始就近寻找。而 super 在调用方法或使用属性的时候直接从其父类开始寻找

this 在创建构造器当中使用时,必须调用本类的构造器。而 super 则调用父类构造器,这两种方式都需要放在构造器的第一行且只能有一个。

在一些特殊的含义时候,this 还可以认为是本类的对象,而 super 则是子类对父类访问的对象。

热门相关:峡谷正能量   戏精老公今天作死没   戏精老公今天作死没   锦庭娇   闺范