• 构造方法里的super()方法


    为什么经常会遇到有的构造函数会有super(),而有的却没有,其实super就比如 对数函数,log的底数为10,如果为10 ,我们可写可不写,如果不为10,那么我们就要加上底数

    1. 在子类构造方法中,super();是默认省略的,(super();的作用是继承父类构造方法)。记住:默认省略不是不存在,而是存在,不过被省略了。

    2. 因为super();存在,所以如果父类是有参构造方法,那问题就出现了,因为子类的构造过程中必须调用父类的构造方法,如果有参,那么不能省略。就要自己调用父类有参构造方法。

      要讲super就不能不提this,下面从4个角度讲解一下super(需要对比的时候拿this对比一下,加深理解)
    1. super关键字表示超(父)类的意思。this变量代表对象本身。
    2. super访问父类被子类隐藏的变量或覆盖的方法。当前类如果是从超类继承而来的,当调用super.XX()就是调用基类版本的XX()方法。其中超类是最近的父类。
    3.调用super() 父类构造函数的时候只能调用在子类构造函数的第一行
    4.this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this

     1    class Person {  
     2        protected void print() {  
     3           System.out.println("The print() in class Person.");  
     4        }  
     5    }         
     6    public class DemoSuper extends Person {        
     7        public DemoSuper(){        
     8           super(); //调用父类的构造方法,而且放第一行,如果不写,系统自动加  
     9        }  
    10        public void print() {  
    11           System.out.println("The print() in class DemoSuper.");  
    12           super.print();// 调用父类的方法  
    13        }         
    14        public static void main(String[] args) {  
    15           DemoSuper ds = new DemoSuper();  
    16           ds.print();  
    17        }  
    18    }
  • 相关阅读:
    56. Merge Intervals
    Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths CodeForces
    CodeForces 1328E-Tree Queries【LCA】
    2^x mod n = 1 HDU
    CodeForces 1327D
    CodeFoeces 1327E
    AtCoder Beginner Contest 159 E
    牛客14648-序列【莫比乌斯反演+容斥定理】
    完全平方数 HYSBZ
    MongoDB学习笔记(六、MongoDB复制集与分片)
  • 原文地址:https://www.cnblogs.com/yonyong/p/8579119.html
Copyright © 2020-2023  润新知