zoukankan      html  css  js  c++  java
  • java中的super限定

    super的用法:

    (1)如果需要在子类中调用父类中被覆盖的实例方法,可以用super限定来调用父类中被覆盖的方法。当然,也可以调用从父类继承的实例变量。

    public void callOverridedMethod()
    {
          super.fly();//fly()是父类中被覆盖的方法      
    }
    

     :super限定用于限定该对象调用它从父类继承的实例变量或者方法,但是super不能出现在static修饰的方法中,因为,static修饰的方法是属于类的,该方法的调用者可能是一个类,而不是一个对象,因此super限定也就失去了意义。?不明白什么意思,从书上看到的,求高手指教!谢谢!

    (2)如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的实例变量,而不是该类自己定义的实例变量。

    public class BaseClass
    {
          public int a=10;  
    }
    
    public class SupClass extends BaseClass
    {
        //隐藏了父类中的实例变量a public int a=1; public SupClass() {
          //在构造器中使用super,可以访问父类中被隐藏的实例变量 super.a=100;//这里初始化的是BassClass中的实例变量的值 } }  

    (3)在一个构造器中调用另一个重载的构造器使用this来完成。

    public class Person
    {
        private String name;
        private int age;
    public Person(String name) {       this.name=name; } public Person(String name,int age) { this(name);//调用重载的构造器 , public Person(String name)      this.age=age;
        } }

    在子类构造器中调用父类的构造器,使用super来完成。

    class Person
    {
        private String name;
        private int age;
    public Person(String name,int age) {
          this.name=name;
          this.age=age; 
        } }

    public class ChinesePerpon
    {
        private String skin;
        public ChinesePerson(String name,int age,String skin)
        {
          super(name,age);
          this.skin-skin;
        }
    }

    :代码是手写的,出错很多,谅解!

      super和this很像。super调用的是父类的构造器(在子类构造器的第一行),而this调用的是同一个类中重载的构造器(在该类构造器的第一行,由于位置的约束,导致this和super不能同时出现)。

      构造器的调用总是从最高父类开始的,最后才是该类的构造器。上面的代码中先是调用Person的构造器,在调用ChinesePerson的构造器。

  • 相关阅读:
    更改eclipse(myeclipse) author的默认名字(注释的作者)
    Myecplise Tomcat 启动很慢
    Java Enum 比较用 == 还是 eques
    Spring JDBC查询返回对象代码跟踪
    Apache启动失败(Windows 无法在本地计算机启动Apache2.2)
    SQLServer2008 统计表占用空间
    SET IDENTITY_INSERT ON/OFF 权限
    字母出现频率
    统计单词数
    查找最大元素
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/4314407.html
Copyright © 2011-2022 走看看