疯狂java学习笔记之面向对象(四) - this关键字
Java中this关键字主要有以下两个方法:
1、this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表构造器正在初始化的实例/对象
2、this调用 - 只能在构造器的第一行出现。
如何区分this引用与this调用呢?
this引用写法为:this. ; 而this调用写法为:this();
例1:
class TestThis{
private double weight;
private String name;
public TestThis(String name){
//this引用在构造器中代表正在初始化的实例/对象
this.name = name;
}
public void info(){
System.out.println("这个是:" + name + ",重量为:" + this.weight);
}
public void bat(){
//this引用在方法中代表谁并不明确,具体是由哪个对象调用它而决定的
this.weight = weight + 10;
}
public static void main(String[] args){
TestThis tt = new TestThis("猴子");
tt.bat();//第一次调用bat方法,重量增加10
tt.info();//输出为:这个是:猴子,重量为:10.0
tt.bat();//第二次调用bat方法,重量在上一次的基础上再加10
tt.info(); //输出为:这个是:猴子,重量为20.0
TestThis tb = new TestThis("犊子");
tb.info();//因为tb没调用bat方法,所以它的重量依旧为0 输出为:这个是:犊子,重量为0.0
}
}
例2:
public class TestThis1 {
private String name; //封装后只能在当前类中访问
private double weight;
private int age;
//构造器不需要声明返回值类型,若声明则会变为普通方法
//构造器重载:类似方法重载-在同一个类中构造器名字相同,但形参不同
public TestThis1(String name,int weight){
this.name = name;
this.weight = weight;
}
public TestThis1(String name,int weight,int age){
this(name,100);//this() - 调用当前类的另一个构造器(根据参数去匹配调用哪个构造器)
this.age = 5;
}
public void info(){
System.out.println("这个是:" + name + ",重量为:" + weight + "KG,年龄是:" + age);
}
public static void bat(String name){
this.name = name;
}
public static void main(String[] args){
TestThis1 t1 = new TestThis1("小象",60);
t1.info();//调用方法的本质就是找到info()方法并执行方法内的语句块
TestThis1 t2 = new TestThis1("大象",200,3);
t2.info();
}
}
疯狂java学习笔记之面向对象(四) - this关键字的更多相关文章
- 疯狂java学习笔记之面向对象(七) - super关键字
super有以下两大作用: 1.起限定作用:强制去访问父类的成员(Field.方法) 2.起调用作用:指定/显示调用父类的某个构造器 super调用规则: 1.子类构造器总会调用父类构造器一次,默认情 ...
- 疯狂java学习笔记之面向对象(八) - static和final
一.static: 1.static是一个标识符: - 有static修饰的成员表明该成员是属于类的; - 没有static修饰的成员表明该成员是属于实例/对象的. 2.static修饰的成员(Fie ...
- Java学习笔记之面向对象、static关键字
一周Java学习总结 今天就总结理清一下关于面向对象和面向过程的程序设计的一些不同特点,以及讲下static关键字. 面向对象 现在接触的Java是面向对象的,现在的程序开发几乎都是以面向对象为基础的 ...
- 疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器
Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. ja ...
- 疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写
一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同 ...
- 疯狂java学习笔记之面向对象(五) - 封装、继承、多态
一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...
- 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递
方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...
- 疯狂java学习笔记之面向对象(九) - 抽象和接口
一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...
随机推荐
- Android单元测试
安卓单元测试总结文章,目测主要会cover以下的主题: 什么是单元测试 为什么要做单元测试 JUnit Mockito Robolectric Dagger2 一个具体的app例子实践 神秘的bonu ...
- web项目没有run on server时..
文章转载至:http://blog.csdn.net/hongchangfirst/article/details/7722703 web项目没有run on server 1.首先确保正确安装Tom ...
- Android Studio 生成Jar包时遇到的gradlew下载问题
网上介绍说使用gradlew打包jar,可是输入gradlew makeJar后就开始download XXX.zip,但是等了很久都没有完成.解决办法如下: 原文:http://blog.csdn ...
- WMI测试
https://social.msdn.microsoft.com/Forums/windowshardware/zh-CN/c5af7959-95d3-4e1b-ab40-96a2a31c2af2/ ...
- Kl 证明 凸函数
回到随机变量传输问题,假设传输中我们不知道具体 分布情况(unknown),我们用一个已知的分布 ,来模拟它,那么在这种情况下如果我们利用 尽可能高效的编码,那么我们平均需要多少额外的信息量来描述x呢 ...
- Logcat打印调试信息
Android Logcat调试中的V.D.I.W.E的分别代表什么? Log.v -- 黑色 -- verbose infoLog.d -- 蓝色 -- debug infoLog.i -- 绿色 ...
- 【PHP数组的使用】
PHP数组使用关键字array标识,数组内的元素可以是任意类型,而且可以不是同一种类型,这和c.java不同. 遍历数组的方法可以使用foreach,也可以使用for循环 可以使用print_r或者v ...
- SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)
练了一天,基本的东东应该有感觉了. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Tabl ...
- httpclient 4.5 get请求
还是官网靠谱啊 package com.test.httpclient.getpost; import java.io.IOException; import java.util.ArrayList; ...
- PL/SQL连接配置
在Oracle安装目录oracle\product\10.2.0\db_2\NETWORK\ADMIN下修改一下三个文件: listener.ora,sqlnet.ora,tnsnames.ora l ...