三:this关键字
- 三:this关键字 推荐度:
- 相关推荐
三:this关键字
1、this调用本类属性
语法 | this.属性 |
代码实例 | class Person { // 构造方法 // 实现setter和getter方法 public void setName(String name) { public int getAge() { public void setAge(int age) { } |
从上面程序中可以看出,在相同的变量名面前,使用了this关键字,可以清楚的得知哪个是本类属性。所以,在以后的程序代码中,只要是访问本类中属性的时候,一定要加上“this”关键字实现访问。
2、this调用本类方法
语法 | 场景 | |
构造方法 | this() | 在使用关键字new的时候才会调用构造方法 |
普通方法 | this.方法名称() | 实例化对象产生之后就可以调用普通方法 |
调用构造方法代码 | this调用本类的操作方法 | |
要求 | 每调用一次构造方法,则输出一条语句“这是一个新的Person对象” | 调用本类的set方法 |
class Person { // 构造方法 public Person(String name) { public Person() { } | class Person { // 构造方法 // 实现setter和getter方法 public void setName(String name) { public int getAge() { public void setAge(int age) { } |
从上面this调用构造方法的代码中,实现了构造方法的互相调用,但是对于本类中的构造方法互相调用,需要注意以下几个问题:
1)构造方法必须在实例化新对象的时候调用,所以“this()”的语句只允许放在构造方法的首行;
2)构造方法互相调用时请保留有程序的出口,不能形成死循环;
范例:构造方法相互调用的案例
要求 | 定义一个描述有员工信息的程序类,该类中提供有:编号、姓名、部门、工资,该类中提供有四个构造方法: 1)无参构造:编号定义为1000,姓名定义为无名氏; 2)单参构造:传递编号,姓名定义为“新员工”,部门定义为“未定义”,工资定义为0.0; 3)三参构造:传递编号,姓名,部门,工资为2500; 4)所有的属性全部进行传递 |
代码 | package cn.demos; class Emp { private long empno; public Emp() { public Emp(long empno) { public Emp(long empno, String ename, String dept) { public Emp(long empno, String ename, String dept, double salary) { public long getEmpno() { public void setEmpno(long empno) { public String getEname() { public void setEname(String ename) { public String getDept() { public void setDept(String dept) { public double getSalary() { public void setSalary(double salary) { @Override } public class Demo2 { } } |
结果 | Emp [empno=11011, ename=里斯, dept=财务, salary=2300.0] Emp [empno=11, ename=lisi, dept=mm, salary=2500.0] |
3、综合实战:简单java类
所谓的简单Java类指的是可以描述某一类信息的程序类,且在这个类之中并没有特别复杂的逻辑操作,只作为一种信息存储的媒介。
对于简单Java类而言,其核心的开发结构如下:
1)类名称一定要有意义,可以明确的描述某一类事物;
2)类之中的所有属性都必须使用private进行封装,同时封装后的属性必须要提供有setter、getter方法;
3)类之中可以提供无数多个构造方法,但是必须要保留有无参构造方法;
4)类之中不允许出现任何的输出语句,所有内容的获取必须返回;
范例:定义一个简单Java类
class Dept {//属性private String deptno;private String dname;private String loc;//无参构造方法public Dept() {}//有参构造方法public Dept(String deptno, String dname, String loc) {super();this.deptno = deptno;this.dname = dname;this.loc = loc;}//setter和getter方法public String getDeptno() {return deptno;}public void setDeptno(String deptno) {this.deptno = deptno;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;}public String getLoc() {return loc;}public void setLoc(String loc) {this.loc = loc;}@Overridepublic String toString() {return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";}}
- Parameter... parameter
- 学习报告:kmp
- 心血漏洞第二发?SSL v3再曝新漏洞发布预警
- 微信小程序选项卡数组列表单项选择切换效果
- 微信小程序滚动Tab选项卡:左右滑动切换、触底加载分页
- matlab 解目标函数,对分法求解目标函数最优解函数MATLAB实现
- 【Jmeter 简单使用】
- CDQ分治(二维CDQ 、三维CDQ+树状数组、四维CDQ+CDQ+树状数组)
- c#打开数据库连接池的工作机制
- 困扰的Byte、bit 、和16进制之间的关系
- 中文去停用词
- SQL语句执行顺序详解
- 想了一个月都不知道如何开始做自媒体
- android 强制竖屏
- Android 强制设置横屏或竖屏
- 一些pta的基础题
- 判断升序
- 怎样才能学好C语言
- Lock锁(重点)
- 锁(Locks)