第四章:java关键字super

news2024/11/24 6:42:06

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、super关键字
  • 二、super 和 this 的比较
  • 总结


前言

super关键字可以用于对象访问父类成员。


一、super关键字

super 代表父类的引用, 用于访问父类的属性、 方法、 构造器。


super.属性名
//访问父类的属性,不能访问父类private属性

super.方法名(参数列表)
//访问父类的方法,不能访问父类的private方法

super(参数列表)
//访问父类的构造器,只能放在构造器的第一句且只能出现一句

super使用细则
调用父类的构造器的好处
当子类中有父类中的成员重名时,为了访问父类的成员,必须通过super
supr的访问不限于父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类中都有同名的成员,使用super访问遵循就近原则(A->B->C),当然也需要遵守访问权限的相关规则
package com.hspedu.super_;

public class A extends Base{
	//4 个属性
	//public int n1 = 100;
	protected int n2 = 200;
	int n3 = 300;
	private int n4 = 400;
	public A() {}
	public A(String name) {}
	public A(String name, int age) {}
	// public void cal() {
	// System.out.println("A 类的 cal() 方法...");
	// }
	public void test100() {
	}
	protected void test200() {
	} 
	void test300() {
	} 
	private void test400() {
	}
}

package com.hspedu.super_;

public class B extends A {
	public int n1 = 888;
	//编写测试方法
	public void test() {
	//super 的访问不限于直接父类, 如果爷爷类和本类中有同名的成员, 也可以使用 super 去访问爷爷类的成员;
	// 如果多个基类(上级类)中都有同名的成员, 使用 super 访问遵循就近原则。 A->B->C
	System.out.println("super.n1=" + super.n1);
	super.cal();
}

//访问父类的属性 , 但不能访问父类的 private 属性 [案例]super.属性名
public void hi() {
	System.out.println(super.n1 + " " + super.n2 + " " + super.n3 );
}
 public void cal() {
	System.out.println("B 类的 cal() 方法...");
} 
public void sum() {
	System.out.println("B 类的 sum()");
	//希望调用父类-A 的 cal 方法
	//这时, 因为子类 B 没有 cal 方法, 因此我可以使用下面三种方式
	
	//找 cal 方法时(cal() 和 this.cal()), 顺序是:
	// (1)先找本类, 如果有, 则调用
	// (2)如果没有, 则找父类(如果有, 并可以调用, 则调用)
	// (3)如果父类没有, 则继续找父类的父类,整个规则, 就是一样的,直到 Object 类
	// 提示: 如果查找方法的过程中, 找到了, 但是不能访问, 则报错, cannot access
	// 如果查找方法的过程中, 没有找到, 则提示方法不存在
	//cal();
	this.cal(); //等价 cal
	//找 cal 方法(super.call()) 的顺序是直接查找父类, 其他的规则一样
	//super.cal();
	//演示访问属性的规则
	//n1 和 this.n1 查找的规则是
	//(1) 先找本类, 如果有, 则调用
	//(2) 如果没有, 则找父类(如果有, 并可以调用, 则调用)
	//(3) 如果父类没有, 则继续找父类的父类,整个规则, 就是一样的,直到 Object 类
	// 提示: 如果查找属性的过程中, 找到了, 但是不能访问, 则报错, cannot access
	// 如果查找属性的过程中, 没有找到, 则提示属性不存在
	System.out.println(n1);
	System.out.println(this.n1);
	//找 n1 (super.n1) 的顺序是直接查找父类属性, 其他的规则一样
	System.out.println(super.n1);
	}
	//访问父类的方法, 不能访问父类的 private 方法 super.方法名(参数列表);
	public void ok() {
	super.test100();
	super.test200();
	super.test300();
	//super.test400();
	//不能访问父类 private 方法
	} 
	//访问父类的构造器(这点前面用过): super(参数列表);只能放在构造器的第一句, 只能出现一句!
	public B() {
	//super();
	//super("jack", 10);
	super("jack");
	}
}

二、super 和 this 的比较

在这里插入图片描述


总结

super用于访问父类的成员。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1184179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2003-2022年高铁数据高铁开通时间数据

2003-2022年高铁数据高铁开通时间数据 1、时间:2003-2022年 2、指标:高铁站名称、开通时间、所在省份、所在城市、所属线路名称、以及相关备注 3、指标说明: Hsrwsnm[高铁站名称]-高铁站名称 Optm[开通时间]-高铁站开通的时间 Prvn[所在…

java传base64返回给数据报404踩坑

一、问题复现 1.可能因为base64字符太长,导致后端处理时出错,表现为前端请求报400错误; 这一步debug进去发现base64数据是正常传值的 所以排除掉不是后端问题,但是看了下前端请求,猜测可能是转换base64时间太长数据过大导致的404 2.前端传…

【C++】——基础编程

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

牵手世界顶尖科学家论坛,五粮液扩大国际高端平台布局

执笔 | 尼 奥 编辑 | 扬 灵 11月6日,以“科学引领变革 重塑世界韧性”为主题的第六届世界顶尖科学家论坛(以下简称“顶科论坛”)在上海召开。来自25个国家和地区,包括27位诺奖得主在内的100余位海外顶尖科学家、40余位中国两…

OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)

1、引言 通过opencv_apps,你可以在ROS中以最简单的方式运行OpenCV提供的许多功能,也就是说,运行一个与功能相对应的launch启动文件,就可以跳过为OpenCV的许多功能编写OpenCV应用程序代码,非常的方便。 对于想熟悉每个…

融云出海:从全球最多 MAU 的 10 款社交 App,看设计细节的重要性

近期,微信又悄悄进行了一次消息弹窗的更新,再次引发网友热议。在最新版本中,用户在聊天时,也能看到新消息的内容,让不少用户大呼方便。实际上,在过去几年,微信的每一次细小更新都会引发“用户到…

如何提高企业竞争力?CRM管理系统告诉你

随着竞争形势和商业环境的加剧,企业需要迅速适应不断变化的消费需求。不少企业使用CRM客户管理系统来优化业务流程,管理客户信息,实现更多的业绩增长。那么我们来说说,CRM系统如何提高企业竞争力? 强大的数据管理&…

一次性搞懂长轮询、短轮询、SSE、websocket区别

[[toc]] http的4种推送技术 客户端轮询:传统意义上的短轮询(Short Polling)服务器端轮询:长轮询(Long Polling)单向服务器推送:Server-Sent Events(SSE)全双工通信:WebSocket图中 每个箭头代表的是 http 连接 tcp的长连接和短连接 http keep-alive 是什么? 本质:…

打包 广告

小米广告 Type android.support.v4.app.INotificationSideChannel is defined multiple times d8clsPath: Error in D:\ChannelFolder\JJChannelPackageForTest\ToolConfigPath\channels-ad\ATemp-100057\xiaomi\lib\xiaomi_ad_merge_20231104.jar:android/support/v4/app/IN…

【中国知名企业高管团队】系列61:海尔Haier

今明两天,华研荟为您介绍中国的另外两个家电巨头,这两个巨头的发展历程都高度相似,都有赖于第一代创业者敏锐和坚持,而且同处一地。他们是海尔和海信,今天先介绍海尔。 一、认识海尔集团 根据海尔集团官网介绍&#…

innovus:解决报告复制时一行拆成两行的问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? innovus复制报告时一行的东西出现在两行上,解决只需要一条命令: set_table_style -no_frame_width

代码随想录算法训练营第四十七天 | LeetCode 198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III

代码随想录算法训练营第四十七天 | LeetCode 198. 打家劫舍、213. 打家劫舍 II、337. 打家劫舍 III 文章链接:打家劫舍 打家劫舍 II 打家劫舍 III 视频链接:打家劫舍 打家劫舍 II 打家劫舍 III 1. LeetCode 198. 打家劫舍 1.1 思路 我们要去偷钱&#…

python使用memory_profiler分析代码运行内存占用

memory_profile memory_profiler源码仓库 安装 pip install memory_profiler 使用 请参考以下文章,写的很详细 【精选】Python代码优化工具——memory_profiler_被Python玩的Kenny的博客-CSDN博客 本文要增加介绍的是API使用 目录结构 |--my.py |--tests | |-- test_m…

设计模式之保护性暂停

文章目录 1. 定义2. 实现保护性暂停模式3. Join原理4. 保护性暂停模式的扩展 1. 定义 即Guarded Suspension,用在一个线程等待另一个线程的执行结果。 有一个结果需要从一个线程传递给另一个线程,让他们关联到同一个GuarderObject(这就是保…

快速教程|如何在 AWS EC2上使用 Walrus 部署 GitLab

Walrus 是一款基于平台工程理念的开源应用管理平台,致力于解决应用交付领域的深切痛点。借助 Walrus 将云原生的能力和最佳实践扩展到非容器化环境,并支持任意应用形态统一编排部署,降低使用基础设施的复杂度,为研发和运维团队提供…

汽车生产RFID智能制造设计解决方案与思路

汽车行业需求 汽车行业正面临着快速变革,传统的汽车制造方式正在向柔性化、数字化、自动化和数据化的智能制造体系转变,在这个变革的背景下,汽车制造企业面临着物流、生产、配送和资产管理等方面的挑战,为了应对这些挑战&#xf…

为什么亚马逊的轻量应用服务器这么受欢迎 | 个人体验 | 优势所在

文章目录 🌺前言⭐什么是轻量应用服务器🛸特点 🎄亚马逊轻量应用服务器体验如何🌹亚马逊轻量应用服务器的优势 🌺前言 作为一为开发者,我们要开发部署一个自己的网站,要选择一个性能好的服务器…

Mercury性能测试模板

xxxxxxxxxx 性能测试报告 2023年11月8日 目 录 1 前言 1 1第一章XXXXXXXX核心业务系统性能测试概述 1 1.1 被测系统定义 1 1.1.1 功能简介 1 1.1.2 性能测试指标 2 1.2 系统结构及流程 2 1.2.1 系统总体结构 2 1.2.2 功能模块描述 3 1.2.3 业务…

简单免费工具帮你恢复Windows中已删除的文件!

​如果你在Windows上丢失了文件,有许多工具可以找到并恢复它们,但WinFR界面版既免费又好用,借助该软件你可以轻松恢复丢失的文件。 Microsoft提供了一款免费的工具,可以帮你找到并恢复因意外删除或磁盘或软件问题导致丢…

Nginx实现tcp代理并实现TLS加密

Nginx源码编译 关于nginx的搭建配置具体参考笔者之前的一篇文章:实时流媒体服务器搭建试验(nginxrtmp)_如何在线测试流媒体rtmp搭建成功了吗-CSDN博客中的前半部分;唯一变化的是编译参数(添加stream模块并添加其对应ss…