栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java小白入门200例83之Java super关键字详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java小白入门200例83之Java super关键字详解

作者简介

作者名:编程界明世隐
简介:CSDN博客专家,从事软件开发多年,精通Java、Javascript,博主也是从零开始一步步把学习成长、深知学习和积累的重要性,喜欢跟广大ADC一起打野升级,欢迎您关注,期待与您一起学习、成长、起飞!

引言

很多Java初学者问我,新手明明很用心、很努力学习的Java知识,转头又忘记了,很让人犯愁,小白如何能够快速成长、成为大牛呢?
其实要成为大神的技巧只有一个:“多学多练”,于是明哥就整理了比较典型的练习实例,通过练习能够快速提升编码技巧和熟练度,让你在成为大佬的路上一去不复返(切记要亲手练习哦)!

导航

✪ Java小白入门200例系列目录索引
◄上一篇  82.Java实现多继承
►下一篇  84.Java对象类型转换向上转型和向下转型

概述

由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。

super 关键字的功能:

  1. 在子类的构造方法中显式的调用父类构造方法
  2. 访问父类的成员方法和变量。
调用父类构造方法 实例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

调用有参的父类构造。

  1. 父类A
package demo.demo83;
//父类
public class A {
	public A(){
		System.out.println("A构造被调用");
	}
	public A(String name){
		System.out.println("A有参构造被调用,参数值为:"+name);
	}
}
  1. 子类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");
	}
}
  1. 运行结果

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实现多继承
►下一篇  84.Java对象类型转换向上转型和向下转型

热门专栏推荐

1.Java小游戏系列(俄罗斯方块、飞机大战、植物大战僵尸等)
2.JavaWeb项目实战(图书管理、在线考试、宿舍管理系统等)
3.Javascript精彩实例(飞机大战、扫雷、贪吃蛇、验证码等)
4.Java小白入门200例
5.从零学Java、趣学Java、以王者荣耀角度学Java

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/292109.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号