封装
封装从字面上来理解就是包装的意思
比如鼠标,外部有一个元件,将内部的原件封装起来,至于鼠标内部的细节是什么,我们不需要关心,只需要知道鼠标对外提供了左键、右键、滚动滑轮这三个简单的操作。对于用户来说只要知道左键、右键、滚动滑轮都能完成什么功能就行了。
怎么封装
- 属性私有化(使用private关键字进行修饰)
- 对外提供简单的操作入口(对外提供公开的读取get()和修改set(),不可以用static修饰
- 通常情况下我们访问对象的某个属性不外乎读取 get()和修改set(),所以对外提供的访问入口应该有两个,这两个方法通常被称为 set方法和 get 方法(请注意:set 和get 方法访问的都是某个具体对象的属性不同的对象调用 get 方法获取的属性值不同,所以 set 和get 方法必须有对象的存在才能调用,这样的方法定义的时候不能使用static 关键字修饰,被称为实例方法。实例方法必须使用 “引用”的方式调用。即一个属性对外提供两个set与get方法。
不带static,被称为“实例方法”
实例变量是对象变量,实例方法是对象方法。
实例相关都需要先“New”对象,用“引用.”访问
//get方法
public int getAge(){
return age;
}
//set方法
public void setAge(){
age = 18;
}
格式是:
public 返回值类型 get +属性名字母大写(无参){
return xxx;
}
set方法的要求:
public void set + 属性名首字母大写(有一个参数){
xxx = 参数;
}
总之,在java 语言中封装的步骤应该是这样的:
需要被保护的属性使用 private 进行修饰,给这个私有的属性对外提供公开的 set 和 get 方法,其
中set方法用来修改属性的值,get方法用来读取属性的值。并且set和get 方法在命名上也是有规范的,规范中要求 set 方法名是 set +属性名(属性名首字母大写),get 方法名是get +属性名(展性名首字母大写)。其中set 方法有一个参数,用来给属性赋值,set 方法没有返回值,一般在 set 方法内部編写安全控制程序,因为毕竟 set 方法是修改内部数据的,而get 方法不需要参数,返回值类型是该属性所属类型(另外set 方法和 get 方法都不带 static 关键宇,不带 static 关键字的方
法称为实例方法,这些方法调用的时候需要先创建对象,然后通过 “引1用”去调用这些方法,实例方法不能直接采用 “类名〞的方式调用。)
package com.itheima.a01staticdemo01;
public class Student {
private String name;
private int age;
public static String teacherName;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
public void study() {
System.out.println(name+"在学习");
}
public void show(){
System.out.println(name+","+age+" ,"+teacherName);
}
}
package com.itheima.a01staticdemo01;
public class StudentTest {
public static void main(String[] args) {
//static修饰的techername共享
//类名调用变量
Student .teacherName="小陈老师";
Student s1 = new Student("张三",18);
s1.study();
s1.show();
Student s2 = new Student("李四",26);
s2.study();
s2.show();
}
}