JAVA笔记 -- this关键字
this关键字
一、 基本作用
在当前方法内部,获得当前对象的引用。在引用中,调用方法不必使用
this.method()这样的形式来说明,因为编译器会自动的添加。
必要情况:
- 为了将对象本身返回
public class Leaf{
int i = 0;
Leaf increment(){
i++;
return this; //明确指出当前对象引用,返回当前对象
}
}
- 引用外部工具传递方法时,为了将自身传递到外部方法
class Peeler{
static Apple peel(Apple apple){
//remove pell
return apple;
}
}
class Apple{
Apple getPeeled(){
return Peeler.peel(this); //这里的this是必要的,将自身传递给外部方法
}
}
二、 在构造器中调用构造器
一个类可能有很多个构造器(重载构造器),如果在一个构造器中调用另一个构造器,避免重复代码,就可以调用其他构造器。这时,就需要
this关键字。
- 调用构造器的时候,必须放在起始处
class CallConstructor(){
CallConstructor(int i){
System.out.println(i);
}
CallConstructor(String str){
this(6); //一定要放在起始处
System.out.println(str);
//! this(6); //放在这里,编译器会报错
}
}
- 调用构造器的时候,只能调用一次
class CallConstructor(){
CallConstructor(int i){
System.out.println(i);
}
CallConstructor(double n){
System.out.println(n);
}
CallConstructor(String str){
this(6); //一定要放在起始处
//! this(1.0); //放在这里编译器会报错,不可以调用两次
//其实说白了也是调用构造器的时候,一定要放在开头
System.out.println(str);
}
}
- 除了构造器之外,其他方法禁止调用构造器
class CallConstructor(){
CallConstructor(int i){
System.out.println(i);
}
CallConstructor(double n){
System.out.println(n);
}
void CommMethod(){
//! this(6); //这是错误的!一定不可以这么写
System.out.println("Common Method");
}
}
三、 static的含义
static顾名思义,就是静态的意思。这个关键字还会在后续继续探究。
static方法
static方法就是没有this的方法。static方法不能调用非静态方法,反过来是可以的。static方法具有全局函数的语义
JAVA笔记 -- this关键字的更多相关文章
- Java笔记 —— this 关键字
Java笔记 -- this 关键字 h2{ color: #4ABCDE; } a{ color: blue; text-decoration: none; } a:hover{ color: re ...
- Java笔记:关键字
关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 ...
- JAVA笔记4__static关键字/对象数组/foreach/方法的可变参数
/** * static关键字:修饰属性(实质就是全局变量).方法(无需本类的对象即可调用此方法).类. * 1.static方法只能调用static方法 * 2.static方法只能访问static ...
- JAVA笔记4-static关键字
1.static方法中不能使用this关键字 2.例题:static成员变量用于计数
- JAVA笔记11-Final关键字
相当于C++中的const (1)final的变量值(成员变量.局部变量(形参))不可被改变: (2)final的方法不能被重写: (3)final的类不能被继承.
- JAVA笔记3-this关键字
1. 2.例题
- Java复习笔记--java中this 关键字
Java中this关键字,this可以调用类的成员变量和成员方法,this还可以调用类中的构造方法.使用这种方式值得注意的是, 只可以在无参构造方法中的第一句使用this关键字调用有参构造方法. pu ...
- Thinking in Java 笔记
大二就买了这本书,如今再看这本书,看到了一些以前没看的细节,也有了不同的体会.本文使用第4版,整理每章的笔记心得.老外的书有个特点,他会花费大量的文字去阐述一个概念,这比堆代码强多了. 第 1 章 对 ...
- TIJ读书笔记05-this关键字
TIJ读书笔记05-this关键字 概述 this的用法 static方法 概述 两个对象同时调用一个方法,那么jvm怎么知道是哪个方法调用的呢. 我们在书写的时候会写成a.fun(1) 或者b.fu ...
随机推荐
- el-dialog模态窗点击空白不消失
通过查阅ElementUI的官方文档,可以发现Dialog对话框组件提供了一个close-on-click-modal属性来设置el-dialog模态窗点击空白不消失. <el-dialog : ...
- windows下的go get 显示进度
我的Go版本是:go1.12.7 1.在你的Go安装目录下找到 D:\Go\src\github.com\tools\godep\vendor\golang.org\x\tools\go\vcs\vs ...
- 你看不懂的spring原理是因为不知道这几个概念
背景 问题从一杯咖啡开始. 今天我去楼下咖啡机买了一杯「粉黛拿铁」.制作过程中显示: 我取了做好的粉黛拿铁,喝了一口,果然就是一杯热巧克力.咦咦咦,说好的拿铁呢?虽然我对「零点吧」的咖啡评价很高,觉得 ...
- vue-cli 3.0按需引入element-ui
vue-cli 3.0脚手架初始化项目成功后,如果需要按需引入element-ui,按照官网的教程,会报如下错误: 这个是由于babel编译插件版本问题,需要安装最新的babel编译插件“@babel ...
- SQL注入:POST注入
POST注入简介 POST注入属于注入的一种,相信大家在之前的课程中都知道POST\GET两种传参方式. POST注入就是使用POST进行传参的注入,本质上和GET类型的没什么区别. POST注入高危 ...
- go语言设计模式之builder
builder.go package builder type BuildProcess interface { SetWheels() BuildProcess SetSeats() BuildPr ...
- The Preliminary Contest for ICPC Asia Nanjing 2019
传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. ...
- vue项目中引入特殊字体
特殊字体指的是默认电脑中没有的 1.下载字体 2.新建文件夹font,把字体放进去 3.新建font.css 4.使用@font-face设置字体 @font-face { font-family: ...
- UVA 503 Parallelepiped walk
https://vjudge.net/problem/UVA-503 题目 给出一个长方体和长方体上两点的坐标,求两点的沿着长方体表面走的最小距离 题解 沿着表面走就是在展开图上面走,如果分类讨论就需 ...
- day90_11_12
一.路由与正则. 1.当函数中需要参数,而不在路由中匹配的时候需要使用default方法: @app.route('/index/<testreg("\d+"):nid> ...