栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中super和this的区别(2022.4.24)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中super和this的区别(2022.4.24)

继承中的super,this使用

this 和 super 的区别

注意点:

  • super调用父类的构造方法,必须在构造方法的第一个
  • super必须只能出现在子类的方法或者构造方法中。
  • super和this不能同时调用构造方法

区别:

  • 首先,this和super代表的对象不同
    • this:本身调用本类的对象
    • super:代表父类兑现的应用
  • 前提:
    • this:没有继承可以使用,因为指表示this在该类的对象
    • super:必须出现在继承后的子类中。
  • 构造:
    • this():本类的构造
    • super():父类的构造

super的使用

    package com.Test;
    
    public class One {
    
        public One(){
            System.out.println("One父类的无参构造!");
        }
        protected String name = "张三";   // 父类属性
    
        public void test1(){
            System.out.println(name+":学Java使我快乐!");  // 父类方法
        }
    
    }
    
    package com.Test;
    
    public class Two extends One {
        public Two(){
            System.out.println("Two子类的无参构造!");
        }
        public void print(){
            System.out.println(super.name);  
          // 使用 super 拿到父类的属性 注意:要定义方法将属性输出调用
        }
        public void test2(){
            this.print();   // 调用本类的print()方法
            super.test1();      // 使用super拿到父类方法 (也是自定义方法进行调用)
        }
    }
    
    package com.Test;
    
    public class Test {
        public static void main(String[] args) {
            Two t = new Two();   // 通过new关键字进行初始化子类利用继承可以拿到父类的所有属性以及方法
            t.print();
            t.test2();
        }
    }
    输出:
      One父类的无参构造!
      Two子类的无参构造!
      张三
      张三
      张三:学Java使我快乐!

注意:很显然上面的测试类中new的是Two(子类)但是程序先输出的是One(父类的构造)这其中把一行代码隐藏了,就是在Two类中的构造方法里面默认执行了一个super();所以就调用了父类中的无参构造。

protected:可以被子类使用,以及同包下的类使用,不公开(只是仅限于子类和同包下的类使用)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835961.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号