封装、this关键字与static
1.封装
封装:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
A:提高了代码的复用性
B:提高安全性。
体现:
将不需要对外提供的内容都隐藏起来。
做法:
把属性隐藏,提供公共方法对其访问。
那么,为了让使用者使用方法来给成员变量赋值,就不能允许它们直接去访问成员变量。
怎么办呢?
为了解决这种情况,java就提供了一个修饰符关键字:private
private:私有的意思。
可以修饰成员变量和成员方法。
特点:
被private修饰的内容,只能在本类中访问。
封装加入private后的标准代码:
A:把成员变量private修饰
B:针对每一个成员变量给出
getXxx()和setXxx()(注意首字母大写)
注意:这里的xxx其实是成员变量名称。
2.this关键字
局部变量如果有一个变量和成员变量名称一致,那么优先使用的是局部变量。
就近原则。这样的话,就造成了局部变量隐藏了成员变量。
如何解决呢?
为了解决这种情况,java就提供了一个代表本类对象的关键字:this
3.构造方法
3.1构造方法:
作用:给对象的数据进行初始化
格式特点:
A:方法名和类名相同。
public void Student() {}
B:没有返回值类型。
修饰符 返回值类型 方法名(...) {...}
C:没有返回值。
没有用return带明确的值回来。
return;
3.2构造方法注意事项
A:如果你不提供构造方法,系统会给出默认无参构造方法
B:如果你提供了构造方法,系统将不再提供默认无参构造方法
这个时候怎么办呢?
a:使用自己给的带参构造。
b:要么自己再提供一个无参构造
建议:建议永远自己给出无参构造方法。
C:构造方法也是可以重载的。
练习:测试标准学生代码
/**
*
* 学生类:
成员变量:
name,age,address
构造方法:无参,带参
成员方法:getXxx()/setXxx()
show(),study()
*
*/
public class Student {
//私有成员变量
private int age;
private String name;
private String address;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void show(){
System.out.println(name+" "+age+" "+address);
}
public void study(String zhaoshi){
System.out.println(name+"学习"+zhaoshi);
}
//无参构造方法
public Student(){}
//有参构造方法
public Student(String name,int age,String address){
this.address=address;
this.age=age;
this.name=name;
}
}
public class Test {
public static void main(String[] args) {
Student s1 = new Student();//调用无参构造方法
s1.setName("郭靖");
s1.setAge(18);
s1.setAddress("牛家村");
s1.show();
s1.study("降龙十八掌");
System.out.println("-----------------------");
Student s2 = new Student("黄蓉", 17, "桃花岛");//调用有参构造方法
s2.show();
s2.study("打狗棒法");
}
}
运行结果:
4.static
为了体现共用的数据,java就提供了一个关键字:static。
static:作用:可以修饰成员变量和成员方法
特点:
A:随着类的加载而加载
B:优先于对象存在
C:被类的所有对象共享
也是我们判断该不该使用静态修饰一个数据的依据。
举例:
饮水机:static
水杯:特有的内容。
D:可以通过类名调用
静态变量:类变量
非静态变量:实例变量,对象变量
非静态的:创建对象访问
静态的:可以通过类名,也可以通过对象访问。