Java基础知识全面总结(第三章)

第三章: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类的定义方法类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

psjasf1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值