码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java学习 --- super关键字


    目录

    一、super是什么

    二、基本语法

    三、super注意事项


    一、super是什么

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

    二、基本语法

    1、访问父类的属性,但不能访问父类的私有(private)属性。super.属性名

    2、访问父类的方法,但不能访问父类的私有(private)方法。super.方法名[形参列表]

    3、访问父类的构造器,只能在构造器的第一句,且只能出现一句。

    A类

    1. public class A {
    2. public int n1 = 100;
    3. protected int n2 = 200;
    4. int n3 = 300;
    5. private int n4 = 400;
    6. public A(int n1) {
    7. this.n1 = n1;
    8. }
    9. //四种不同类型的方法
    10. public void test1(){
    11. System.out.println("test1");
    12. }
    13. protected void test2(){
    14. System.out.println("test2");
    15. }
    16. void test3(){
    17. System.out.println("test3");
    18. }
    19. private void test4(){
    20. System.out.println("test4");
    21. }
    22. }

    B类

    1. public class B extends A {
    2. //访问父类的属性
    3. public void b1(){
    4. System.out.println(super.n1 + super.n2 + super.n3);
    5. }
    6. //访问父类的方法
    7. public void b2(){
    8. super.test1();
    9. super.test2();
    10. super.test3();
    11. }
    12. //访问父类构造器
    13. public B() {
    14. super(1);
    15. }
    16. }

    三、super注意事项

    1、调用父类构造器的好处,分工明确,父类的属性由父类初始化,子类的属性由子类初始化。

    1. public class A {
    2. public void test(){
    3. System.out.println("A类的test方法");
    4. }
    5. }
    1. public class B extends A {
    2. public void test(){
    3. System.out.println("B类的test方法");
    4. }
    5. public void b1(){
    6. //test();方法一:直接调用
    7. //this.test();//方法二:使用this关键字调用,等于方法一
    8. super.test();//方式三:使用super关键字调用,super会直接从父类查找该方法
    9. }
    10. }

    方法调用规则:

    ①、先在本类查找,如果有该方法,就调用

    ②、当在本类中没有找到该方法,就去父类查找,如果有该方法,就调用。

    ③、当父类没有找到该方法,就一直往上一级查找,直到Object类。

    ④、在查找方法的过程中如果找到,但不能访问就会报错,如果没有,就会提示该方法不存在。

    2、当子类有和父类中的成员(属性和方法)重名时,为了访问父类成员,必须通过super,当没有重名,使用super、this、直接访问是一样的效果。

    3、super的访问不限于直接父类,当父类的父类有同名的成员,也可以使用super去访问父类的父类的成员,当多个基类中有同名的成员,使用super访问依旧遵循就近原则。

    4、super与this的比较

     

  • 相关阅读:
    【clickhouse】ubuntu20安装clickhouse并用DBeaver远程管理
    MySQL的MHA
    从Matlab实例学习遗传算法
    1.2继承性
    vue.js毕业设计,基于vue.js前后端分离在线小说电子书阅读系统(H5移动项目) 开题报告
    PCB测试四大方式你都了解吗?DFM的重要性不容忽视
    今日AI:Midjourney角色一致性功能上线、Grok即将开源、OpenAI永远提供免费版ChatGPT
    做直播或短视频 其实有几个精准粉丝就可以很快变现
    QT操作SQLite数据库_界面方式_增删改查
    Redis 通用命令(keys,help,mset,exists,expire,ttl,tab补全)
  • 原文地址:https://blog.csdn.net/qq_46093575/article/details/126800432
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号