IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java关键字this和super浅析 -> 正文阅读

[Java知识库]Java关键字this和super浅析

一.关键字this

this是指向当前类对象的一个变量,当前哪个对象调用,this就指向哪个成员

特点

  1. this可以访问当前对象中的属性、方法、构造器;
  2. 当局部变量和当前类的属性同名时,this可以区分两者;
  3. 可以通过this.属性名访问类中的属性;
  4. 可以通过this.方法名(实参列表)访问类中的方法;
  5. this只能在构造器中访问其它形式的构造器,通过this(实参列表)来访问构造器;
  6. this只能在类定义的方法中使用,不能在类外使用;
  7. this调用其它形式的构造器时,只能放在当前构造器中的第一行;
    示例:
package This;

public class Base {
    Base(){}
    Base(int num){
        //通过this区分同名的局部变量和属性
        this.num = num;
    }
    Base(int num1, int... nums){
        //this在当前构造器的第一行调用单个参数的构造器
        this(num1);
    }
    
    private int num;
    public void showNum() {
        //this调用属性
        System.out.println(this.num);
    }
    
    public void printNum(){
        System.out.println("Study hard, Work hard");
        //this调用方法
        this.showNum();
    }
}

二.关键字super

super是父类对象的引用,通过super可以调用父类的属性、方法、构造器

特点

  1. super访问的父类并不仅仅是直接父类,而是所有的上层具有继承关系的类;
  2. super可以访问父类的属性,通过super.属性名来访问;
  3. super可以访问父类的方法,通过super.方法名(实参列表)来访问;
  4. super访问父类的构造器,但是只能放在构造器的第一行;
  5. super和this两者不能出现在同一行,也就是通过super调用父类构造器时,不能通过this调用当前类的其它形式的构造器。
    示例:
package Super;

public class Father {
    String character;   //性格
    String hairColor;   //发色
    int IQ;             //智商

    Father(){}

    Father(String character, String hairColor, int IQ){
        this.character = character;
        this.hairColor = hairColor;
        this.IQ = IQ;
    }

    Father(int IQ){
        this.character = "自由生成";
        this.hairColor = "黑色";
        this.IQ = IQ;
    }
}

package Super;

public class Son extends  Father{
    String temperament;     //气质

    Son(){
        //什么都不写等价于 super();
    }

    Son(String character, String hairColor, int IQ, String temperament){
    	//调用父类构造
        super(character, hairColor, IQ);
        this.temperament = temperament;
    }

    Son(String temperament){
    	//这里不能使用this,因为this和super在构造器的第一行只能有一方存在
        super();
        this.temperament = temperament;
    }
}
  1. super向上查找属性或方法时,遵循就近原则,也就是上层最近的哪个父类中有对应的属性和方法就调用该属性或方法;
    super查找遵循就近原则示例:
package Super;

//祖先类
public class Ancestor {
    public int num = 1;
}

package Super;

//父类
public class Base extends Ancestor{
    //public int num = 2;
}


package Super;

//子类
public class Derive extends Base{
    public int num = 3;

    void showNum(){
        System.out.println(super.num);
    }
}

package Super;

//主线程类
public class Main {
    public static void main(String[] args) {
        Derive derive = new Derive();
        derive.showNum();
    }
}

运行结果:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:04:04  更:2022-04-06 16:05:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:40:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码