首页 > 其他分享 >super学习

super学习

时间:2022-10-02 16:33:11浏览次数:50  
标签:String 构造方法 学习 println super public name

2022-10-02 16:27:38

super

super代表的是“当前对象(this)”的父类型特征

概念

1、super是一个关键字,全部小写。

2、super和this对比着学习。

  this:

    this能出现在实例方法和构造方法中。

    this的语法是:”this.“,”this()“

    this不能使用在静态方法中。

    this.大部分情况下是可以省略的

   ⭐this.在区分局部变量和实例变量的时候不能省略。

public class setName(String name){
this.name=name;
}
//此时不能省略

    this()只能出现在构造方法第一行,通过当前的构造方法去调用”本类“中其他的构造方法,目的是:代码复用

  super

    super只能出现在实例方法和构造方法中。

    super的语法是:”super.“,”super()“

    super不能使用在静态方法中。

    super.大部分情况下是可以省略的

   ⭐super.在???的时候不能省略。

      父类和子类中有同名属性,或者说同样的方法,

      想在子类中访问父类的,super.,不能省略。

    super()只能出现在构造方法第一行,通过当前的构造方法去调用”父类“中其他的构造方法,目的是:创建子类对象的时候,先初始化父类特征

3、super()

  表示通过子类的构造方法调用父类的构造方法

  模拟现实生活中的这种场景:要想有儿子,需要先有父亲

4、重要结论:

  当一个构造方法第一行:

    既没有this()有没有super()的话,默认会有一个super();

    表示通过当前子类的构造方法调用父类的无参数构造方法。

    所以必须保证父类的无参数构造方法是存在的。(建议手动添加)

5、this()和super()不能共存,他们都只能出现在构造方法第一行

6、无论怎样,父类的构造方法是一定会执行的。(百分百的)

public class SuperTest{
    public static void main(String [] args){
        new C();
    }
}
class A{
    public A(){
        Systemm.out.println("A的无参数构造执行1");
    }
}
class B extends A{
    public B(){
        System.out.println("B的无参数构造执行2");
    }
    public B(String name){
        System.out.println("B的有参数构造执行(String)3");
    }         
}
class C extends B{
    public C(){
    this("zhangsan"); System.out.println("C的无参数构造执行4"); } public C(String name){
    this(name,20); System.out.println("C的有参数构造执行(String)5"); } public C(String name,int age){
    super(name); System.outt.println("C的有参数构造执行(String,int)6"); } }

执行结果

A的无参数构造执行1
B的有参数构造执行(String)3
C的有参数构造执行(String,int)6
C的有参数构造执行(String)5
C的无参数构造执行4
在Java语言中不论是new什么对象,最后老祖宗的Object类的无参数构造方法一定会执行。(Object类的无参数构造方法是处于”栈顶部位“(最后调用,最先执行结束))

用法

 


 

 

 利用super(String a,double b)实现对父类私有变量在子类的构造方法中的赋值。

标签:String,构造方法,学习,println,super,public,name
From: https://www.cnblogs.com/gbrr/p/16747903.html

相关文章

  • 【学习笔记】fhq_treap 无旋平衡树
    推一个视频引入Treap平衡树原型:基于旋转实现的BST+Heap,通过随机索引和堆使得BST的单次复杂度稳定在\(O(\logn)\)。fhqtreap则是将treap改造了一下,变成了基于分裂与......
  • 学习python-Day67
    今日学习内容2个视图基类属性说明queryset要序列化的数据serializer序列化类lookup_field(了解)通过get_object获取单个对象的查询key值,value值是......
  • 学习记录13标准的JavaBean类
    标准的JavaBean类类名需要见名知意成员变量使用private修饰提供至少两个构造方法无参构造方法带全部参数的构造方法成员方法提供每一个成员变量对应的setXxx()......
  • 2022-2023-1 20221327《计算机基础与程序设计》第五周学习总结
    作业信息这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05作业目......
  • 2022-2023-1 20221415 《计算机基础与程序设计》第五周学习总结
    学期(如2022-2023-1)学号(如:20221300)《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作......
  • Markdown学习
    Markdown字体helloworldhelloworldhellowordhelloworld分割线引用锄禾日当午图片超链接链接到百度表格姓名性别年龄张三男26列表......
  • 教材第11章学习笔记
    EXT2文件系统知识点归纳EXT2:体现文件系统设计和实现的原则磁盘块的内容:Block#0:引导块Block#1:超级块【用于容纳整个文件系统的信息】Block#2:块组描述符块【磁盘块......
  • 2022-2023-1 20221328 《计算机基础与程序设计》第五周学习总结
    作业信息班级:首页-2022-2023-1-计算机基础与程序设计-北京电子科技学院-班级博客-博客园(cnblogs.com)作业要求:2022-2023-1《计算机基础与程序设计》教学进程......
  • 机器学习可解释性--LIME源码阅读
    首先,访问github上的LIME源码,https://github.com/marcotcr/lime​将代码克隆至本地。我用的是pycharm打开进行阅读。下载下来后使用pipinstall.,别......
  • 2022-2023-1 20221306《计算机基础与程序设计》第五周学习总结
    作业信息这个作业属于哪个课程:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP这个作业要求在哪里:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK05作业目......