zoukankan      html  css  js  c++  java
  • 1.10(java学习笔记)super关键字

    supe主要是调用父类中被重写的方法及属性。

    用下列代码那说明:

    package cn.hcf.TestSuper;
    
    public class TestSuper {
        public static void main(String[] args){
            Student stu = new Student();
            stu.task();
        }
    }
    
    class Person{
        int ID;
        void task(){
            ID = 100;
            System.out.println("工作");
        }
    }
    
    class Student extends Person{
        int ID;
        void task(){            //task方法已被子类重写
            ID = 200;
            super.task();       //通过super调用父类中的task方法,应打印“工作”。
            System.out.println("学习");
            System.out.println("Person:" + super.ID + "
    " + "Student:" + ID);  //super是父类中ID的值应为100
        }    
    }
    运行结果:
    工作
    学习
    Person:100
    Student:200

    还有一个知识点就是,所有类的第一句都隐含一个super(),写于不写(不写编译器会自动加上)都是这句话。;意思是调用父类的无参构造方法。

    用下面代码说明:

     1 package cn.hcf.TestSuper;
     2 
     3 public class TestSuper {
     4     public static void main(String[] args){
     5         Student stu = new Student();
     6         
     7     }
     8 }
     9 
    10 class Person{
    11     public Person(){
    //super(); 隐含的
    12 System.out.println("Person"); 13 } 14 } 15 16 class Student extends Person{
    //super(); 隐含的
    17 public Student(){ 18 System.out.println("Student"); 19 } 20 }
    运行结果:
    Person
    Student

    我们会发现,我们只创建了一个Studetn类的对象,应该只调用Student的无参构造方法,可是最后它也调用了Person的无参构造方法。

    这是因为每一个类的第一句都隐含了一句super();所以是层层向上追溯,直到Oject类。

    所以以我们这代码为例,层层向上追溯,最先创建好的是Object,然后创建Person,person包裹object,再创建Student,student包裹person,这样层层包裹。

     

  • 相关阅读:
    Ubuntu Windows双系统时差8小时问题解决
    linux无线网络配置
    Ubuntu 10.04上腾达W541U V2.0 无线网卡驱动的使用
    有些歌,放在这慢慢听
    [推荐]什么是程序员的优秀品质?
    如何阅读源代码
    Ubuntu中的有线、无线网络连接管理器──Wicd[译]
    linux下无线网卡解决方案之Ndiswrapper终极使用指南
    将jar文件做成exe可运行文件
    WOW裁缝1375详细攻略
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/9341906.html
Copyright © 2011-2022 走看看