zoukankan      html  css  js  c++  java
  • 关于java中super()和this()

    在java中this表示当前类中的对象,super则表示父类中的对象。比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当然,this的另一个用途是调用当前对象的另一个构造方法,如果你想引用父类的某种东西,则选super。

    class Person {
     
        public static void prt(String s) {
            System.out.println(s);
        }
     //父类构造函数1
        Person() {
            prt("A Person.");
        }
     //父类构造函数2
        Person(String name) {
            prt("A person name is:" + name);
     
        }
    }
     
    public class Chinese extends Person {
        Chinese() {
            super(); // 1.调用父类构造函数(1)
            prt("A chinese.");// (4)
        }
     
        Chinese(String name) {
            super(name);// 2.调用父类具有相同形参的构造函数(2)
            prt("his name is:" + name);
        }
     
        Chinese(String name, int age) {
            this(name);// 3.调用当前类带形式参数的构造函数Chinese(String name)
            prt("his age is:" + age);
        }
     
        public static void main(String[] args) {
            Chinese cn = new Chinese();
            cn = new Chinese("kevin");
            cn = new Chinese("kevin", 22);
        }
    }
    

     

     在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟 
    上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的 
    构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在 
    Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你 
    可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它 
    是父类中的方法且可被子类访问),它照样可以正确运行。但这样似乎就有点画蛇添足的味道 
    了。 
    一句话------this通常指代当前对象,super通常指代父类

  • 相关阅读:
    个人总结21
    个人总结08
    个人总结07
    构建之法读后感01
    学习进度表 03
    四则运算3
    求最大值
    学习进度表02
    四则运算 2
    学习进度表01
  • 原文地址:https://www.cnblogs.com/NeilLing/p/4019381.html
Copyright © 2011-2022 走看看