第三章:this关键字
第九课:this调用本类属性
1.this关键字的使用区域
this主要用于以下三类结构的描述:
(1)当前类中的属性:this.属性
(2)当前类中的方法(构造方法,普通方法):this()--构造方法,this.普通方法()
(3)描述当前对象
2.有关类的编程规范
在Java编程中,只要是访问本类中的属性,都要使用this关键字,即:this.属性的形式来访问。
3.代码案例:
public class Main {
public static void main(String[] args) {
Person person=new Person("张三",20);
System.out.println(person.getName()+":"+person.getAge());
}
}
//定义一个类
class Person{
private String name;//类的成员属性姓名
private int age;//类的成员属性年龄
//构造方法
public Person(String name, int age){
//this.name表示的是成员属性的name,后一个name是方法参数
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
if(age<0){
System.out.println("年龄应该大于0岁");
}
this.age = age;
}
}
代码结果:

代码分析:
在类Person中定义了两个成员属性,在类中要使用成员属性时,一定要加上this关键字,便于和参数进行区分,因为在一个方法结构体中会遵循就近原则寻找变量,若不加this关键字变量就变成了方法参数了,不能起到为成员属性赋值的效果。
第十课:this调用本类方法
this调用本类方法主要分为this调用构造方法和this调用普通方法
this调用普通方法:
格式:this.普通方法(参数)
案例:
public Person(String name, int age){
//this调用普通方法
this.setName(name);
this.setAge(age);
}
代码分析:这里是在构造方法里面调用了set方法对成员属性进行赋值,在用this调用普通方法时this可以省略,对程序没有影响,但在写程序时最好要加上使得程序结构完整。
this调用构造方法:
格式:this(参数)
由于构造方法只能在对象实例化的时候调用,即this调用构造方法只能在一个类的几个构造函数之间进行互相调用,调用需要注意以下问题:
(1.this(参数)只能放在构造函数的首行
(2.构造方法相互调用时要保留出口,不能形成死循环
案例:
设计一个可以传一个参数,两个参数,三个参数,四个参数,也可以不传参数的程序
传统方法:
public class Main {
public static void main(String[] args) {
Employee emp = new Employee("张三",10001,"程序开发",6800);
emp.toTell();
}
}
class Employee {
private String name;
private double salary;
private long emp;
private String dept;
//无参构造
public Employee(){
this.name = "无名氏";
this.emp=1000;
}
//一参构造
public Employee(String name){
this.name = name;
}
//二参构造
public Employee(String name,long emp){
this.name = name;
this.emp=emp;
}
//三参构造
public Employee(String name,long emp,String dept){
this.name = name;
this.emp=emp;
this.dept=dept;
}
//四参构造
public Employee(String name,long emp,String dept,double salary){
this.name = name;
this.emp=emp;
this.dept=dept;
this.salary=salary;
}
//setter,getter略
public void toTell(){
System.out.println(this.name+" "+this.emp+" "+this.dept+" "+this.salary);
}
}
代码分析:在传统方法中没有在构造函数之间用this来进行构造方法之间的调用,这样会导致有许多重复代码产生,不利于Java程序的编写规范。
使用this调用的方法:
public class Main {
public static void main(String[] args) {
Employee emp4 = new Employee("张三",10001,"程序开发",6800);
Employee emp3 = new Employee("张三",10001,"程序开发");
Employee emp2 = new Employee("张三",10001);
Employee emp1 = new Employee("张三");
Employee emp = new Employee();
emp.toTell();
emp1.toTell();
emp2.toTell();
emp3.toTell();
emp4.toTell();
}
}
class Employee {
private String name;
private double salary;
private long emp;
private String dept;
//无参构造
public Employee(){
this("无名氏",1000," ",0.0);
}
//一参构造
public Employee(String name){
this(name,1000," ",0.0);
}
//二参构造
public Employee(String name,long emp){
this(name,emp," ",0.0);
}
//三参构造
public Employee(String name,long emp,String dept){
this(name,emp,dept,0.0);
}
//四参构造
public Employee(String name,long emp,String dept,double salary){
this.name = name;
this.emp=emp;
this.dept=dept;
this.salary=salary;
}
//setter,getter略
public void toTell(){
System.out.println(this.name+" "+this.emp+" "+this.dept+" "+this.salary);
}
}
输出结果:

代码分析:在这段代码中在构造参数之间使用了this关键字对构造函数进行调用,大量减少了传统方法中的代码冗余。使得程序结构上更加清晰。
第十一课:简单Java类
1.什么是简单Java类
所谓的简单Java类就是描述一类信息的程序类,例如描述一个人,一本书,一个部门,一个商品订单等。
2.简单Java类的核心开发结构
(1.类的名称一定要有意义,可以是描述信息的名称
(2.类的成员属性一定要用private进行封装,一定要有setter/getter方法,可以有多个构造函数,但必须至少写一个无参构造函数
(3.类中不允许出现输出语句,所有内容获取必须返回
(4.(非必须)可以给一个获取类的一个实例对象的详细信息的函数,方法名可为getInfo().
3.代码实例:
Dept.java文件
//定义一个类名称为Dept的员工信息Java类
public class Dept {
//定义部门名称
private String deptname;
//定义部门编号
private long deptno;
//定义部门位置
private String loc;
//定义一个无参构造方法
public Dept(){}
//定义一个有参构造方法,用于对象实例化时给实例化对象赋初值
public Dept(String deptname,long deptno,String loc){
this.deptname=deptname;
this.deptno=deptno;
this.loc=loc;
}
//定义属性的setter、getter方法
public void setDeptname(String deptname){
this.deptname=deptname;
}
public void setDeptno(long deptno){
this.deptno=deptno;
}
public void setLoc(String loc){
this.loc=loc;
}
public String getDeptname(){
return this.deptname;
}
public long getDeptno(){
return this.deptno;
}
public String getLoc(){
return this.loc;
}
//定义一个可以获取实例化对象详细信息的方法
public String getInfo(){
return "部门名称:"+this.deptname+"\n"+
"部门编号:"+this.deptno+"\n"+"部门地址:"+this.loc;
}
}
Main.java文件
public class Main {
public static void main(String[] args) {
Dept dept =new Dept("开发部",1024,"北京市中关村");
System.out.println(dept.getInfo());
}
}
执行结果:

代码分析:以上代码为一个简单Java类的基本格式或者基本结构,在定义一个Java类时基本都是与此简单Java类的定义方法类似。

被折叠的 条评论
为什么被折叠?



