封装
封装从字面上来理解就是包装的意思
比如鼠标,外部有一个元件,将内部的原件封装起来,至于鼠标内部的细节是什么,我们不需要关心,只需要知道鼠标对外提供了左键、右键、滚动滑轮这三个简单的操作。对于用户来说只要知道左键、右键、滚动滑轮都能完成什么功能就行了。
怎么封装
- 属性私有化(使用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();}
}