zoukankan      html  css  js  c++  java
  • JAVA基础(十六)Super关键字

    Super关键字:

    Super关键字的特点:

          This  与super 不能同时存在第一行;

            构造方法第一行都有一个默认语句 super()无参构造;

            私有化后显示定义无法在用默认,

             空参时先调父类构造在子类构造,因为默认语句 super()

             第一行只要this在就没有super.

    super的调用:

             super:代表当前对象父类的引用

             super.成员变量 调用父类的成员变量

             super(…) 调用父类的构造方法

            super.成员方法 调用父类的成员方法

    //定义Person类,将Student和Worker共性抽取出来
    class Person {
        private String name;
        private int age;
        public Person(String name, int age) {
            // super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    //Student extends Person
    class Student extends Person { // Student类的构造方法 Student(String name, int age) { // 使用super关键字调用父类构造方法,进行相应的初始化动作 super(name, age); } public void study() {// Studnet中特有的方法 System.out.println(this.getName() + "同学在学习"); } }
    //Worker extends Person
    class Worker extends Person { Worker(String name, int age) { // 使用super关键字调用父类构造方法,进行相应的初始化动作 super(name, age); } public void work() {// Worker 中特有的方法 System.out.println(this.getName() + "工人在工作"); } }
    //测试
    public class Test { public static void main(String[] args) { Student stu = new Student("小明",23); stu.study(); Worker w = new Worker("小李",45); w.work(); }

    This()是调用自己其他的构造函数,Super()是调用自己继承的父类的构造函数“,

    如果只想调用默认无参数的父类构造函数,不用在子类的构造函数当中写出来,但是实际编程的时候,总是会忽略这一点。

       那门这两个关键字能不能同时出现在子类的一个构造函数当中吗?答案肯定是不能

      原因:This  与super 不能同时存在第一行;JAVA 中规定使用 this 和 super 时必须放在构造函数第一行

     

  • 相关阅读:
    为什么每天都在学习,生活还是没有任何改善?
    MySql基础汇总
    BeanUtils.copyProperties(待复制对象, 待更新对象) || PropertyUtils.copyProperties(待更新对象, 待复制对象)
    ThreadLocal
    synchronized 锁
    STS报could not find tools.jar in the active JRE
    SpringBoot 定时任务 || cron表达式
    lombok注解
    cron表达式
    Thymeleaf 模板引擎
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11302229.html
Copyright © 2011-2022 走看看