初始化与清理(1)

用构造器确保初始化
  • 构造器的名称必须与类名完全相同。
  • 类的构造器相当于一个创建对象时执行的方法,当不写构造器的时候,会默认为类提供一个无参构造器
  • 当写了一个有参数的构造器的时候,无参构造器便不会默认提供了,如果有需要的话,还是要再写。
class Rock {

    //无参构造器
    Rock(){}

    //有参数构造方法
    Rock(String str) {
    //这相当于调用了上面的无参数构造器,构造器之间可以互相调用,不过要再构造器方法中的第一行代码中调用,并且要避免死循环。这里面也涉及到了方法重载,后面再说。
        this();
        System.out.println(str);
    }
}
方法重载

所谓方法重载,也就是有多个方法,但是方法之间的名称相同,但是参数不一样,也是为了让同个方法表示不同的意义。

class Tree {
    int height;
    public void info() {
        System.out.println("this tree's height is"+this.height);
    }

    public void info(int height) { 
        System.out.println("this tree's height is"+height);
    }
}
区分重载方法

每个重载的方法都必须有一个独一无二的参数类型列表,要么是个数不一样,要么是同顺序的参数的类型不一样。不能用返回类型区分重载的方法。因为如果参数列表也一样的话,调用方法的时候, 编译器无法判断你调用的到底你哪个方法。

涉及基本类型的重载

基本类型能从一个较小的类型自动提升至一个较大的类型。

class PrimitiveOverloading {
    void f(byte x) { 
        System.out.println("byte");
    }
    void f(int x) {
        System.out.println("int");
    }
    void f(double x) {
        System.out.println("double");
    }
    public void static main(String[] args) {
        //结果:int;因为直接整形数默认为int,所以调用的是第二个方法,当没有第二个方法的时候,会向上提升,这时结果就会是double;
        f(1);
        //结果:byte;
        f((byte)1);
    }
}
this关键字

this的就是这个的意思,指的是当前对象。

public class Apple {

    int weight;

    public void setWeight(int weight) {
        //这里指的当前对象的weight属性
        this.weight=weight;
    }

    public void provide() {
        //把当前对象的引用作为参数使用
        Animal.eat(this);
    }
}
static的含义

在static方法的内部不能调用非静态方法,反过来可以。因为static方法很像全局方法,static方法不算“面向对象”的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值