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

super详解

父类

package com.mypackage.oop.demo06;public class Person06{public Person06() {System.out.println("Person06无参执行了");}protected String name = "hexioahei";public void print(){System.out.println("Person");}
}

子类

package com.mypackage.oop.demo06;public class Student06 extends Person06 {/*构造器和方法两个看起来是很像,但二者是有区别的,注意看,构造器名字必须与类名相同(包括首字母要大写),且无需写返回类型;而方法名字可以多样化,且需要写返回值类型。*///super();  比如放这就会报错public Student06() {/*会默认先执行父类的Person构造器里的内容,也就是说,默认存在一个super();一个简单的super();就可以执行父类构造器的内容。写super();来调用父类构造器时,super();必须放在子类构造器的第一行*///super();放这就不会报错System.out.println("Student06无参执行了");//super放这也会报错}
/*
若父类中定义了有参构造而没有定义无参构造,
则子类不能调用父类的无参构造,
子类也不会默认调用父类的有参构造*/private String name = "jack";public void print(){System.out.println("Student");}public void test2(){print();//自己类里的方法printthis.print();//自己类里的方法printsuper.print();//父类里的方法print}public void test(String name){System.out.println(name);  //该方法传递的参数nameSystem.out.println(this.name);  //该类里的nameSystem.out.println(super.name);  //父类里的name}//super只能调用父类里的public方法,不可调用private方法//private的东西不能被调用
}/*之前说到子类可以默认拥有父类所有public方法与属性,
那如果父类和子类定义了同一个方法呢?
比如,在Person与Student中均定义了一个public void print(){},
那我们在Application中写student。print时,到底是调用了哪个print?
答案是,Student自己的那个print方法*//*
小小总结一下super:
1.super调用父类的构造方法是,必须在构造方法的第一个
2.super必须只能出现在子类的方法或者构造器中
3.super和this不能同时调用构造方法,因为两者都需要在第一行super Vs super:
1.代表对象不同:this:本身调用者这个对象super:代表父类对象的应用
2.前提:this:没有继承也可以使用super:只能在继承条件下才能使用
3.构造方法:this():本类的构造super():父类的构造*/

应用

package com.mypackage.oop.demo06;import com.mypackage.oop.demo06.Student06;public class Application06 {public static void main(String[] args) {Student06 student06 = new Student06();//实例化需在方法中进行student06.test("何小黑");System.out.println("------------");student06.test2();}}
//输出
Person06无参执行了
Student06无参执行了
何小黑
jack
hexioahei
------------
Student
Student
Person进程已结束,退出代码0
http://www.lryc.cn/news/169670.html

相关文章:

  • GMS地下水数值模拟丨GMS各模块、三维地质模型构建及与MODFLOW耦合、地下水流动数值模拟及报告编制、地下水溶质运移模型、反应性溶质运移等
  • Redis 配置文件详解 - 持久化(RDB、AOF)
  • 在线Excel转JSON工具
  • Spring编程常见错误50例-Spring Bean依赖注入常见错误(下)
  • SpringBoot整合Canal实现MySQL与ES数据同步
  • Zookeeper 源码分析流程
  • 计数排序与基数排序
  • Mysql—表操作
  • SpringCloud——微服务
  • 深入理解Java单例模式和优化多线程任务处理
  • 已解决 Kotlin Error: Type mismatch: inferred type is String but Int was expected
  • Web应用系统的小安全漏洞及相应的攻击方式
  • git工具下载和安装
  • 腾讯mini项目-【指标监控服务重构】2023-08-04
  • 怎么推广自己抖店的商品?最适合0经验新手操作的办法,来看看
  • 线性代数的本质(三)——线性方程组
  • 轻量级性能测试工具 wrk 如何使用?
  • WebGL 视图矩阵、模型视图矩阵
  • Python 3 – 文件 readline() 方法
  • 如何在微软Edge浏览器上一键观看高清视频?
  • Telegram BoT的主流项目盘点
  • PTA 甲级 1044 Shopping in Mars
  • Linux学习之MyCat实现分库分表
  • DirectX12(d3d12)初始化
  • 算法通关村-----回溯模板如何解决排列组合问题
  • 【1++的C++进阶】之智能指针
  • 一百七十九、Linux——Linux报错No package epel-release available
  • 【AI视野·今日CV 计算机视觉论文速览 第248期】Mon, 18 Sep 2023
  • 解决Vue项目中的“Cannot find module ‘vue-template-compiler‘”错误
  • tensorflow基础