您的位置:首页 > 编程语言 > Java开发

Java学习笔记4--程序的进一步优化

2017-04-06 21:03 246 查看
封装

好处:

A:提高了代码的复用性

B:提高安全性。

体现:

将不需要对外提供的内容都隐藏起来。

做法:把属性隐藏,提供公共方法对其访问。

假如我们要给age赋值,但是赋予负数值居然也通过了。这是不满足实际需求的。

我们应该对不满足需求的数据给与判断。

而判断不能直接针对成员变量做,因为要判断,就必须写在方法中。

所以,我们应该用一个方法给年龄赋值并判断。

虽然我们已经通过一个方法做出了数据不正常的判断,但是我们还是可以通过对象直接访问成员变量。

那么,为了让使用者使用方法来给成员变量赋值,就不能允许它们直接去访问成员变量。

怎么办呢?

为了解决这种情况,java就提供了一个修饰符关键字:private

private:

私有的意思。

可以修饰成员变量和成员方法。

特点:
被private修饰的内容,只能在本类中访问。


this关键字详解

常说:

见名知意。

局部变量如果有一个变量和成员变量名称一致,那么优先使用的是局部变量。

就近原则。

这样的话,就造成了局部变量隐藏了成员变量。

如何解决呢?

为了解决这种情况,java就提供了一个代表本类对象的关键字:this

构造方法

构造方法:

作用:给对象的数据进行初始化

格式特点:

A:方法名和类名相同。

public void Student() {}

B:没有返回值类型。

修饰符 返回值类型 方法名(…) {…}

C:没有返回值。

没有用return带明确的值回来。

return;

构造方法注意事项

A:如果你不提供构造方法,系统会给出默认无参构造方法

B:如果你提供了构造方法,系统将不再提供默认无参构造方法

这个时候怎么办呢?

a:使用自己给的带参构造。

b:要么自己再提供一个无参构造

建议:建议永远自己给出无参构造方法。

C:构造方法也是可以重载的。

给成员变量赋值:

A:通过setXxx()方法

B:通过带参构造方法

练习:创建汽车类并测试

public class Car {
//1.写一个标准的汽车类并测试(私有化成员变量,对外提供setXxx()和getXxx()方法)

private String brand;
private int price;
private String color;

public void setBrand(String brand){            //对外提供setBrand()方法
this.brand=brand;
}
public String getBrand(){                      //对外提供getBrand()方法
return brand;
}

public void setPrice(int price){               //对外提供setPrice()方法
this.price=price;
}
public int getPrice(){                         //对外提供getPrice()方法
return price;
}

public void setColor(String color){            //对外提供setColor()方法
this.color=color;
}
public String getColor(){                      //对外提供getColor()方法
return color;
}

public Car(){}
public Car(String brand,int price,String color){
this.brand=brand;
this.price=price;
this.color=color;
}

public void lake(){
System.out.println("可以去拉客");
}
public void show(){
System.out.println(brand+"  "+price+"  "+color);
}
}


public class CarTest {

/**
* 1.写一个标准的汽车类并测试(私有化成员变量,对外提供setXxx()和getXxx()方法)
*/
public static void main(String[] args) {
Car c = new Car();
c.setBrand("坦克");
c.setPrice(250);
c.setColor("绿色");
System.out.println(c.getBrand()+" "+c.getPrice()+" "+c.getColor());

Car c2 = new Car("奔驰",800,"白色");
c2.lake();
c2.show();
c.show();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: