疯狂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修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...
随机推荐
- PHP如何判断远程图片文件是否存在
<?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File E ...
- 宠物收养所(bzoj1208)
Description 最近,阿Q开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物.每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特 ...
- openURL的使用方法:
openURL的使用方法: view plaincopy toclipboardprint? [[UIApplication sharedApplication] openURL:[NS ...
- 自定义Log模块
BuildConfig.DEBUG默认为true,在为app打上SignedKeyStore之后就为false, // Log控制器 MyLoger.openDebutLog(true); MyLog ...
- Stuts2的"struts.devMode"设置成true后,不起作用,仍需要重启tomcat
在项目的struts.xml加入了常量配置:<constant name="struts.devMode" value="true" />后,重启服 ...
- php 删除文件夹
<?php // ./tp // ./tp/Public function deldir($dirname) { if(!file_exists($dirname)) { die("文 ...
- cutpFTP设置步骤
cutpFTP设置步骤 平常时为了方便两台电脑之间传送数据,我们可以使用cutpftp这个工具实现,而且cutpftp还具有定时传送的功能,非常方便使用.以下是使用该工具的“同步文件夹”功能同步两台电 ...
- C语言的OOP实践(OOC)
OOC 面向对象 C 语言编程实践 - 文章 - 伯乐在线http://blog.jobbole.com/105105/ ---硬着头皮看完了,但是感觉还是抽象有不理解的地方,感觉用C实现OOP好难啊 ...
- 编程风格规范google版
python's coding style,google 命名
- OCJP(1Z0-851) 模拟题分析(一)11
Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...