【Java类与对象】迅腾公司实例探索2(原创)
this关键字
点击加入订阅淘帖:【JAVA练习题】第一季
static/image/hrline/line5.png
不知道触发了什么关键词,总是被审核
【JAVA练习题】【索引贴】
https://fishc.com.cn/thread-157183-1-1.html
今天我们就来谈谈关键字this.
this 关键字是 Java常用的关键字,可用于任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。
用事实说话,自己动手做个小实验吧。
public void showAddressInMemory(){
System.out.println("打印this看到的虚拟地址:"+this);
}
我们调用这样的函数来看this指向的地址。
怎么看呢?作为阅片无数的优秀员工,鱼大觉得有把身边漂亮的小姐姐,{:10_282:} 咳咳不对,{:10_299:} 是把公司里的女同事拉到一个群里,鱼大做群主。
于是我们就有了一个名为Girls的类。我们忽略这个类具体是怎样构造的。
public static void main(String[] args) {
Girs Mary =new Girls();
Mary.name = "玛丽";
//直接打印对象,会显示该对象在内存中的虚拟地址,即虚拟地址,每次执行,得到的地址不一定一样
System.out.println("打印对象看到的虚拟地址:"+Mary);
//调用showAddressInMemory,打印该对象的this,显示相同的虚拟地址
Mary.showAddressInMemory();
Girls Lucy =new Girls();
Lucy.name = "露西";
System.out.println("打印对象看到的虚拟地址:"+Lucy);
Lucy.showAddressInMemory();
}
那this可以用来做神马呢~
加入我们通过setName()来设置名字,那么
public void setName(String name){
name = name;
}
天啊好像什么不好的事情发生了,参数的名字和属性值都是name,系统傻傻的分不清,就把参数传递给参数自己了,这个时候呢,就要请出公司配备的领路老司机this
public void setName(String name){
this.name = name;
}
这样你不用换个昵称就可以搭上老 司 机 的车了。
我们也可以利用this在构造方法中调用其他构造方法
public setInfo(String name,int age){
this(name);
this.age = age
}
练习
你觉得Girls类应该有哪些属性?,亮出你的代码。
要求:至少四个属性并且存在一个包含四个属性的构造器,在这个构造器里调用setInfo构造器。
**** Hidden Message *****
传参
老 司 机 小 甲 鱼 登记妹子资料被老板发现了,天啊!
怎么办呢,小 甲 鱼不敢明目张胆地往新创建的类里传入妹子的参数了。{:10_280:}
聪明的小 甲 鱼想到:
变量有两种类型 基本类型 和类类型
参数也是变量,所以传参分为
基本类型传参
类类型传参
还记得等号= 吗~以前我们用它来赋值
Girls g = new Girls()
在这里的等号,我们叫做引用,引用Girls类指向一个g对象
小甲鱼要来构建一个新的类了,传入类参数,总体来说需要两步
1、定一个类
public class Girls{//定义一个类
}
2、定一个方法,类Girls作为参数传递
public class XXX{//定义一个新类
public void show(Girls a){//类作为参数传递
}
}
是不是像废话一样,拿来动动手:
练习:
在方法中,使参数引用指向一个新的对象
外面的引用是指向原来的对象?还是新的对象?
答案:
**** Hidden Message *****
类属性(静态属性)与类方法(静态方法)
1
相信大家看了很久的static一直不知道具体做什么的
当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性
当一个属性被声明成类属性,那么所有的对象,都共享一个值
比如小 甲 鱼 是群主,只需要定义一次,就是所有人的群主啦{:10_281:}
static String owner;
好了这回我们有了群主的属性,指定群主可以直接在类里:
owner = "小甲鱼"
我们也可以在实例化时候指定,但是只能指定一次
Lucy.owner ="小甲鱼"
这时候我们就可以随处访问这个属性,比如Girs.owner,Mary.owner
这样所有人的群主都是小 甲 鱼 了,当然如果不二在小 甲 鱼之 前抢了小 甲 鱼 群主的头衔,鱼大也只能干生气了
练习:通过Mary.owner修改群主名字,看是否发生变化
static/image/hrline/5.gif
2
很多人都想进小 甲 鱼的群???
类方法: 又叫做静态方法
对象方法: 又叫实例方法,非静态方法
访问一个对象方法,必须建立在有一个对象的前提的基础上
访问类方法,不需要对象的存在,直接就访问
和访问类属性一样,调用类方法也有两种方式
比如getGroupNumber()方法可以获得入群方式
1. 对象.类方法
Mary.getGroupNumber();
2. 类.类方法
Girls.getGroupNumber();
这两种方式都可以调用类方法,但是建议使用第二种方式进行,这样更符合语义上的理解。
并且在很多时候,并没有实例,比如在前面练习的时候用到的随机数的获取办法
Math.random()
random()就是一个类方法,直接通过类Math进行调用,并没有一个Math的实例存在。
练习:在一个类方法中,直接调用一个对象方法,
比如在GirlList类中调用setName()
能否直接调用? 为什么?
**** Hidden Message *****
页:
[1]