Java基础

Java简介
Java 简介
Java 开发环境配置
Java 注释
我的第一个Java程序
Java基础语法
Java 基础语法
Java 基本数据类型
Java 变量类型
Java 权限修饰符与非权限修饰符
Java 运算符
Java 循环结构
Java 条件语句
Java switch case 语句
Java String类
Java 数组
Java 方法
Java面向对象
Java 对象和类
Java 继承
Java重写与重载
Java 多态
Java 抽象类
Java 封装
Java 接口
Java 包(package)
java this和super的使用
Java面向对象进阶
Java 泛型
Java容器
Java Enumeration接口
Java Bitset类
Java Vector 类
Java Stack 类
Java Dictionary 类
Java Hashtable 类
Java 数据结构
Java 集合框架
Java异常
Java 异常处理
Java IO
Java Properties 类
Java字节数组输出流类
Java数据输入流类
Java字节数组输出流
Java数据输入流类
Java File类
Java FileReader类
Java FileWriter类
Java 流(Stream)、文件(File)和IO
Java Scanner 类
Java并发
Java 多线程编程
Java高级技术
Java8 最新技术
Java 8 Lambda 表达式
Java 8 方法引用
Java 8 函数式接口
Java 8 默认方法
Java 8 Stream
Java 8 Optional 类
Java 8 Nashorn JavaScript
Java 8 日期时间 API
Java8 Base64
Java 8 新特性
Java9 最新技术
Java 9 新特性
Java 9 模块系统
Java 9 REPL (JShell)
Java 9 改进 Javadoc
Java 9 多版本兼容 jar 包
Java 9 集合工厂方法
Java 9 私有接口方法
Java 9 改进的进程 API
Java 9 改进的 Stream API
Java 9 改进的 try-with-resources
Java 9 改进的 @Deprecated 注解
Java 9 钻石操作符(Diamond Operator)
Java 9 改进的 Optional 类
Java 9 多分辨率图像 API
Java 9 改进的 CompletableFuture API
Java常用类
Java Number, Math 类
Java Character 类
Java StringBuffer 和 StringBuilder 类
Java 日期时间
Java 正则表达式
Java 序列化

java this和super的使用

前言

在一个实例方法或者是构造方法中,this引用指向当前的对象---方法调用或者是构造方法调用的对象。你可以在实例化方法或者构造方法中,使用this引用任何成员。super引用指向父类对象,你可以在实例化方法或者构造方法中,使用super引用父类的protected、public成员变量和成员函数。

 

在字段中使用this

使用this关键字的最常见的原因,是字段被方法或构造函数的参数隐藏了。

例如,Point类是这样写的:

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int a, int b) {
        x = a;
        y = b;
    }
}

等价于

public class Point {
    public int x = 0;
    public int y = 0;
        
    //constructor
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

构造方法的每个参数都隐藏了对象的字段---在构造方法里,x是构造方法的第一个参数的局部副本,引用Point字段x,构造方法必须使用this.x.

 

在构造方法使用this

在构造方法里,你可以使用this关键字调用类的另一个构造方法。这种是显式构造方法调用。这里有一个Rectangle类:

public class Rectangle {
    private int x, y;
    private int width, height;
        
    public Rectangle() {
        this(0, 0, 0, 0);
    }
    public Rectangle(int width, int height) {
        this(0, 0, width, height);
    }
    public Rectangle(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }
    ...
}

super关键字试用

public class C{//父类
	protected String name="parent value";
}
public class E extends C{
	String name = "child name";
	
	/**
	 * 打印父类name
	 */
	void printParentName(){
		System.out.println(super.name);
	}
	
	/**
	 * 打印自身name
	 */
	void printMyName(){
		System.out.println(this.name);
	}

	public static void main(String[] args) {
		E child = new E();
		child.printParentName();
		child.printMyName();
	}

}

输出:

parent value
child name

 

private, protected,package,public 的作用域参考权限修饰符