java面向对象学习记录-05 this关键字

this调用本类属性

  • 当前类中的属性:this.属性
  • 当前类中的方法(普通方法、构造方法):this()、this.方法名称();
  • 描述当前对象;

属性:
如果不加this,由于按照就近取用原则,程序默认取用本{}内的同名参数。所以访问本类中属性的时候,要在属性变量前加this实现访问。

this调用本类方法

方法:

  • 构造方法调用【this()】:使用关键字new实例化对象的时候才会调用构造方法。要放在构造方法中执行
  • 普通方法调用【this.方法名称()】:实例化对象产生之后就可以调用普通方法。
普通方法调用的构造方法中:
this.setName(name);
this.setAge(age); 
构造方法调用:
    public Person() {
        System.out.println("***一个新的Person类对象实例化了。***" );//不论调用重载构造方法中的哪个,只要相应的构造方法里面写了本构造方法,则本构造方法中的输出就被执行。
    }
    public Person(String name){
        this(); //调用本类无参构造
        this.name = name ;
    }
    public Person (String name,int age){  //定义有参构造
        this(name); //调用单参构造
        this.age = age ;
    }

上面构造方法的调用实现了重用,而且消除了重复。需要注意的问题:

  • 构造方法必须在实例化新对象的时候调用,所以”this()“的语句只允许放在构造方法首行 构造方法中可以调用普通方法,但是在普通方法中是没可能调用构造方法的。
  • 构造方法互相调用时要保留有程序的出口:不能出现构造器的递归调用。

构造方法之间互相调用从而减少重复代码:

    public Person (String name,int age){  //定义有参构造
        this(name); //调用单参构造
        this.age = age ;
         this.num = "未定的默认值" ;
        ↓↓↓
     public Person (String name,int age){  //定义有参构造
        this(name,age,"未定的默认值");}

编写代码的时候一定要先考虑消除重复。

综合案例:简单java类

简单java类:可以描述某一类信息的程序类。【描述一个人、描述一本书、一个部门、一个雇员】并且在此类中没有特别复杂的逻辑操作。只是一个信息存储的媒介。核心开发结构如下:

  • 类名称一定要有意义,可以明确的描述一类事物;
  • 类中的所有属性都必须使用private进行封装,同时封装后的属性必须要提供有setter、getter;
  • 类之中可以提供有无数多个构造方法,但是必须要保留有无参构造方法。;
  • 类中不允许出现任何的输出语句,所有内容的获取必须返回
  • 【非必须】可以提供有一个获取对象详细信息的方法,暂时将此方法名称定义为getInfo();

范例:

class Dept {//类名称可以明确描述出某类事物
    private long deptno ;
    private String dname ;
    private String loc ;
    //类中的所有属性都必须使用private进行封装,并设置setter和getter方法
    public String getInfo(){//获取对象详细信息的方法
        return "【部门信息】部门编号:" + this.deptno+
                "、部门名称:"+ this.dname+
                "、部门位置:"+this.loc ;
        //勒种不允许出现任何输出语句
    }
    public void setDeotno(long depto){
        this.deptno = deptno ;
    }
    public void setDname(String dname){
        this.dname = dname ;
    }
    public void setLoc(String loc){
        this.loc = loc ;
    }
    public long getDeptno(){
        return this.deptno ;
    }
    public String getDname(){
        return this.dname ;
    }
    public String getLoc(){
        return this.loc ;
    }
    public Dept(){}//必须提供有无参
    public Dept(long deptno,String dname,String loc) {
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc ;
    }
}
public class jiandanjavaclass {
    public static void main(String[] args){
        Dept dept = new Dept(10,"技术部","北京") ;
        System.out.println(dept.getInfo());
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值