Java小白入门200例83之Java super关键字详解
Posted 编程界明世隐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java小白入门200例83之Java super关键字详解相关的知识,希望对你有一定的参考价值。
作者简介
作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、javascript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!
引言
很多Java初学者问我,新手明明很用心、很努力学习的Java知识,转头又忘记了,很让人犯愁,小白如何能够快速成长、成为大牛呢?
其实要成为大神的技巧只有一个:“多学多练”,于是明哥就整理了比较典型的练习实例,通过练习能够快速提升编码技巧和熟练度,让你在成为大佬的路上一去不复返(切记要亲手练习哦)!
导航
✪ Java小白入门200例系列目录索引
◄上一篇 82.Java实现多继承
►下一篇待更新
概述
由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。
super 关键字的功能:
- 在子类的构造方法中显式的调用父类构造方法
- 访问父类的成员方法和变量。
调用父类构造方法
实例1
父类A和子类B(未用到super)
package demo.demo83;
//父类
public class A {
}
package demo.demo83;
//子类B
public class B extends A {
}
实例2
在B类中加入构造函数,并调用super
package demo.demo83;
//子类B
public class B extends A {
public B(){
super();
}
}
此时的super() 调用的就是A类默认的构造方法,我们自己来写一下A类默认的构造,让其看的更清楚。
实例3
更清晰的看到父类A的构造在子类中可以通过super来调用。
package demo.demo83;
//父类
public class A {
public A(){
System.out.println("A构造被调用");
}
}
package demo.demo83;
//子类B
public class B extends A {
public B(){
super();
}
public static void main(String[] args) {
//实例化B
new B();
}
}
运行一下:
A构造被调用
实例4
调用有参的父类构造。
- 父类A
package demo.demo83;
//父类
public class A {
public A(){
System.out.println("A构造被调用");
}
public A(String name){
System.out.println("A有参构造被调用,参数值为:"+name);
}
}
- 子类B
package demo.demo83;
//子类B
public class B extends A {
public B(){
super();
}
public B(String name){
super(name);
}
public static void main(String[] args) {
//根据有参的构造来实例化B
new B("小geigei");
}
}
- 运行结果
A有参构造被调用,参数值为:小geigei
访问父类成员
当子类的成员变量或方法与父类同名时,可以使用 super 关键字来访问。
给父类和子类分别定义一个属性 n ,并在B类中访问它。
package demo.demo83;
//父类
public class A {
int n = 10;//定义一个属性
public A(){
System.out.println("A构造被调用");
}
public A(String name){
System.out.println("A有参构造被调用,参数值为:"+name);
}
}
package demo.demo83;
//子类B
public class B extends A {
int n = 20;//定义一个属性
public B(){
super();
}
public B(String name){
super(name);
System.out.println("父类属性n:"+super.n);
}
public static void main(String[] args) {
//根据有参的构造来实例化B
new B("小geigei");
}
}
运行结果:
A有参构造被调用,参数值为:小geigei
父类属性n:10
调用成员方法
当父类和子类都具有相同的方法名时,可以使用 super 关键字访问父类的方法。
在父类A和子类B中分别加入sayHello方法
package demo.demo83;
//父类
public class A {
int n = 10;//定义一个属性
public A(){
System.out.println("A构造被调用");
}
public A(String name){
System.out.println("A有参构造被调用,参数值为:"+name);
}
public void sayHello() {
System.out.println("父类A说:你好呀");
}
}
package demo.demo83;
//子类B
public class B extends A {
int n = 20;//定义一个属性
public B(){
super();
}
public B(String name){
super(name);
super.sayHello();
}
public void sayHello() {
System.out.println("子类B说:你好呀");
}
public static void main(String[] args) {
//根据有参的构造来实例化B
new B("小geigei");
}
}
运行结果:
A有参构造被调用,参数值为:小geigei
父类A说:你好呀
super和this
this 指的是当前对象的引用,super 是当前对象的父对象的引用。
将上述实例的B类稍作改造,加入一行代码 this.sayHello()。
package demo.demo83;
//子类B
public class B extends A {
int n = 20;//定义一个属性
public B(){
super();
}
public B(String name){
super(name);
super.sayHello();
this.sayHello();
}
public void sayHello() {
System.out.println("子类B说:你好呀");
}
public static void main(String[] args) {
//根据有参的构造来实例化B
new B("小geigei");
}
}
运行结果如下:
A有参构造被调用,参数值为:小geigei
父类A说:你好呀
子类B说:你好呀
使用 super 关键字访问父类中与子类同名的方法sayHello,this 关键字访问本类的sayHello方法。
小结
这节总结了“ Java super关键字详解 ”,希望能对大家有所帮助,请各位小伙伴帮忙 【点赞】+【收藏】+ 【评论区打卡】, 如果有兴趣跟小明哥一起学习Java的,【关注一波】不迷路哦。
评论区打卡一波让我知道你,明哥会持续关注你的学习进度哦!
导航
✪ Java小白入门200例系列目录索引
◄上一篇 82.Java实现多继承
►下一篇待更新
热门专栏推荐
1.Java小游戏系列(俄罗斯方块、飞机大战、植物大战僵尸等)
2.JavaWeb项目实战(图书管理、在线考试、宿舍管理系统等)
3.JavaScript精彩实例(飞机大战、扫雷、贪吃蛇、验证码等)
4.Java小白入门200例
5.从零学Java、趣学Java、以王者荣耀角度学Java
以上是关于Java小白入门200例83之Java super关键字详解的主要内容,如果未能解决你的问题,请参考以下文章
Java小白入门200例105之Java ArrayList类