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 则是子类对父类访问的对象。
文章来源地址https://www.toymoban.com/news/detail-556071.html
文章来源:https://www.toymoban.com/news/detail-556071.html
到了这里,关于Java 继承、super() 关键字使用、super 和 this的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!