面向对象-this关键字的概述和应用
2024-10-06 11:36:54
/*
我们曾经说过:定义名字要做到见名知意。 this:是当前类的对象引用。简单的记,它就代表当前类的一个对象。 注意:谁调用这个方法,在该方法内部的this就代表谁。 this的场景:
解决局部变量隐藏成员变量
*/
//定义学生类
class Student {
//姓名
private String name;
//年龄
private int age; //姓名获取值
public String getName() {
return name;
} //姓名设置值
public void setName(String name) { //String name = "林青霞";
//name = name; //zhou:想把林青霞赋值给外面的name,但是变量的使用规则是就近的原则,所以林青霞还是去找最近的参数String name,
//把自己赋给了自己,和外面的private String name没有关系,这叫局部变量隐藏成员变量
//如果可以的话通过Student.name = name就可以,要用静态修饰(private static String name) //刘意:变量的使用规则:就近原则
//这里是类名,目前还没有说过类似的用法,所以这个是有问题的
//这里的调用只能通过对象名
//这个对象如果存在,它应该代表的是Student的一个对象。
//那么,谁能够代表当前类的对象呢? java就提供了一个关键字 this
//Student.name = name; this.name = name;
} //年龄获取值
public int getAge() {
return age;
} //年龄赋值
public void setAge(int age) {
this.age = age;
}
} //测试类
class StudentTest {
public static void main(String[] args) {
//创建学生对象
Student s = new Student(); //给成员变量赋值
s.setName("林青霞");
s.setAge(27);
//获取数据
System.out.println(s.getName()+"---"+s.getAge());
}
}
若把成员变量定义成静态(把main方法放在主类中方便在Eclipse使用Run As——>Java Application):
package cn.itcast; public class Student {
//姓名
private static String name;
//年龄
private int age; public static String getName() {
return name;
} public static void setName(String name) {
Student.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public static void main(String[] args) {
// 创建学生对象
Student s = new Student(); // 给成员变量赋值
s.setName("林青霞");
// 推荐用类名调用
Student.setName("林青霞");
s.setAge(27);
// 获取数据
System.out.println(s.getName() + "---" + s.getAge());
System.out.println(Student.getName() + "---" + s.getAge());
} } // 测试类
class StudentTest { }
测试也是OK的:
最新文章
- 详解三种缓存过期策略LFU,FIFO,LRU(附带实现代码)
- ADB
- css3 transition动画
- 第二章 git 工作区与reset,revert
- 立方体旋转 【web前端学习部落22群120342833】
- hdu 5358 First One
- CSU 1081 集训队分组
- zw版【转发·台湾nvp系列Delphi例程】HALCON GenGridRegion
- 未能加载文件或程序集“Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342";
- 2016年CCF第七次测试 俄罗斯方块
- 百度统计js被劫持用来DDOS Github的JS注释
- iOS - NSLog的使用方法
- Django---->;视图(View)
- 一个Ajax读数据并使用IScroll显示辅助类
- hadoop多文件输出MultipleOutputFormat和MultipleOutputs
- K3WISE常用表
- [PHP] PHP在CLI环境下的错误日志
- Centos 7安装RabbitMQ 3.7.8版本(单机版)-不使用RPM
- python什么时候加self,什么时候不加self
- 九度OJ1108-堆栈的使用
热门文章
- pl/sql 过程 函数(写一个过程,输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金))
- Fiddler抓包原理和使用详解
- PHP AJAX返回 ";TEXT";
- vue echarts圆角阴影效果
- linux 文件锁flock,lockf,fcntl
- 六十:Flask.Cookie之flask设置cookie的有效域名
- Selenium下Chrome配置
- python在shell中环境变量使用
- rpm操作
- finereport 通过条件弹出 alert进行提示