一、如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员,如下:

//如何在一个类中创建另外一个类的对象,然后用这个类的对象的引用来访问这个对象里面的成员
    Car bm = new Car();
    bm.setYear(1949);
    System.out.println(bm.getYear());

 

二、为什么我们要用私有修饰符来修饰变量,然后通过get和set方法来访问?

通过get和set这种间接的方式来访问私有变量,其实是用到了java中的“封装”。

隐藏实现细节,对外提供公共的访问方式,私有的成员变量,比如make只能在Car类中被直接访问,而其它的类,比如ClassDemo只能通过set和get方式来调用访问,这样做的目的是为了安全,同时通过set和get方法来访问能够做判断,如果在传值的时候传入的是非法值,set判断后就不会允许成功赋值,举例如下(对年份进行判断):

package introduction;

public class Car {
    
    //颜色
    private String color;
    //生成商
    public String make;
    //型号
    private String model;
    //年份
    private int year;

    //车拥有一个加速度的功能
    public void acceleration() {
    System.out.println("加速度了.....");
    }
    /*
     * 为了能够区分下面这段话,这里我们将表示生产商的make定义为make1,setMake中的make
     * 定义为make2,此处为了方便其它类调用,所以取名相同。
     * 因为需要给make2这个变量赋值,但上面已经定义了make1是一个字符串类型的变量,
     * 所以这里同样需要一个字符串类型的变量来进行接收,也取名叫make2,方便给make2赋值,
     * 同时也方便调用者进行区分,
     * 如果在方法主体中写成make2=make2,那么表示的都是setMake中的参数列表的中make,
     * 这个make2是局部变量,make1是成员变量。
     * 所以为了区分这两个make,就有了关键字this,
     * 使用格式为“this.”,使用了该关键字后就能够区分局部变量和成员变量,
     * 在成员变量前面加上this后变为“this.make=make”
    */
    public void setMake(String make) {
        //哪个对象来调用setMake方法,这个this就给哪个对象里的成员变量赋值
        this.make = make;
    }
    //因为make是字符串类型,所以返回的make也是字符串类型,
    //get的目的是为了返回这个成员变量的值给调用者
    public String getMake() {
        return this.make;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public String getModel() {
        return model;
    }
    public void setModel(String model) {
        this.model = model;
    }
    public int getYear() {
        return year;
    }
    public void setYear(int year) {
        if(year>1990) {
        this.year = year;
        }else {
            System.out.println("年份无效");
        } 
    }
}

在ClassDemo类中调用:

Car bm = new Car();
    bm.setYear(1997);
    System.out.println(bm.getYear());

结果:

传入的值大于“1990”则显示传入的值,否则显示为“年份无效”并显示默认值“0”(这就是私有权限时使用set能够方便进行判断)

 

三、封装:是面向对象的重要法则,就是把对象的属性和行为结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

 

四、凡是访问了对象里数据的方法,都有this的引用,只是当变量名重名时才显式的写出了加以区分。

posted on 2018-08-21 14:15  时光以北暮南城  阅读(181)  评论(0编辑  收藏  举报