当前位置: 首页 > backend >正文

Java----super 关键字

super关键字

  • 基本介绍:

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

    1、访问父类的属性,但不能访问父类的private属性  如:super.属性名; ​
    2、访问父类的方法,不能访问父类的private方法  如:super.方法名(参数列表); 
    3、访问父类的构造器(这点前面用过:)  super(参数列表);只能放在构造器的第一句,只能出现一句!
    
  • 代码示例:

    • Base类:

      package com.jyy.improve_;
      ​
      public class Base {public int n1 = 100;protected int n2 = 200;int n3 = 300;private int n4 = 400;
      ​
      //    public Base(){
      //        System.out.println("父类Base() 构造方法被调用。。。。。。。");
      //    }
      ​public Base(String name , int age){System.out.println("父类 Base(String name , int age) 构造方法被调用。。。。。。");}
      ​public int getN4() {return n4;}
      ​public void test1(){System.out.println("text01().............");}
      ​protected void test2(){System.out.println("text02().......");}
      ​void test3(){System.out.println("text03()........");}
      ​private void test4(){System.out.println("text04()........");}
      ​public void testing(){test4();}
      }
    • Sub子类:

      public class Sub extends Base {
      ​public Sub() {super("smith",30);System.out.println("子类Sub()构造方法被调用。。。。。。");}
      ​public void sayOk(){System.out.println(super.n1 + " " + super.n2 + " " + super.n3 + " " + getN4());super.test2();super.test3();super.test1();super.testing();}
      }
      ​

    • 主函数:

      public class ExtendsDetail {public static void main(String[] args) {Sub sub = new Sub();sub.sayOk();}
      }
      ​

super关键字的细节

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

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

    public void cal(){System.out.println("调用子类的cal()方法。。。。。。。。。。。。。。。。");}
    ​public void sum(){cal();this.cal(); // 等价于calsuper.cal(); //直接调用父类的cal()  ===>这是与this的区别}
    ​
    ​
    输出:
    调用子类的cal()方法。。。。。。。。。。。。。。。。
    调用子类的cal()方法。。。。。。。。。。。。。。。。
    调用父类的cal()方法。。。。。。。。。。。。。。。
     
  3. super的访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类(上级类)中都有同名的成员,使用super访问遵循就近原则。 A - > B - > C

http://www.xdnf.cn/news/2308.html

相关文章:

  • 《ATPL地面培训教材13:飞行原理》——第13章:高速飞行
  • Linux进程解析
  • 信息系统项目管理师备考计划
  • 摸鱼屏保神器工具软件下载及使用教程
  • C#里使用libxl来加载网络传送过来的EXCEL文件
  • 计算机二级MS Office第一套演示文稿
  • 图解 Redis 事务 ACID特性 |源码解析|EXEC、WATCH、QUEUE
  • 【数据湖】Time Travel时间旅行
  • 每日学习Java之一万个为什么?
  • 3.1 掌握RDD的创建
  • 英语学习4.26
  • 进行物联网安全PoC时的注意事项
  • 【Java-Day 1】开启编程之旅:详解Java JDK安装、环境配置与运行HelloWorld
  • 用c语言实现——一个动态顺序存储的串结构
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-前端美化滚动条问题
  • 2025年4月25日第一轮
  • Vue Composition API 与 Options API:全面对比与使用指南
  • HTML快速入门-4:HTML <meta> 标签属性详解
  • 【漫话机器学习系列】224.双曲正切激活函数(Hyperbolic Tangent Activation Function)
  • 现在流行的linux面板管理工具
  • 三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!
  • TCGA 数据下载与生存分析 //todo
  • FreeRTOS事件标志组详解:高效的任务间通知机制
  • 结合五层网络结构讲一下用户在浏览器输入一个网址并按下回车后到底发生了什么?
  • 机器学习基础理论 - 频率派 vs 贝叶斯派
  • Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?
  • 什么是Lua模块?你会如何使用NGINX的Lua模块来定制请求处理流程?
  • Spring 学习笔记之 @Transactional 异常不回滚汇总
  • 【机器学习-线性回归-3】深入浅出:简单线性回归的概念、原理与实现
  • 【VMware】虚拟机如何扩展存储