【Java 基础】4 面向对象 - 封装:面向对象三大特征之一
- 第 151 篇 -
Date: 2025 - 11- 16
Author: 郑龙浩(仟墨)
文章目录
- 【Java 基础】
- 4 面向对象 - 封装:面向对象三大特征之一
- 4.1 封装概念
- 4.2 private | public 关键字
- 4.3 封装的设计要求(合理隐藏,合理暴露)
【Java 基础】
4 面向对象 - 封装:面向对象三大特征之一
4.1 封装概念
就是用类设计对象,处理某一个事物的数据时,类分为两部分:
- 1 存储数据的成员变量
- 2 处理存储数据的方法
这些东西封装起来,并且要合理利用private将不能被外界访问的变量隐藏起来
4.2 private | public 关键字
- private: 私有,隐藏
- public: 公有,公开
前者用于修饰私有成员,后者用于修饰公有成员
4.3 封装的设计要求(合理隐藏,合理暴露)
下面是一个标准的设计风格:
Student.java 文件
package zhenglonghao.opp.student;
public class Student {// private 就是设置私有成员 / 方法,如下:// 私有属性,实现封装(设置私有属性后,在类外无法访问)(比如在Test.java中无法访问name属性)private String name; // private 就是设置私有属性的private int age;private double height;private double weight;private String sex;// public 设置公有成员 / 方法,如下:// 无参构造器(如果设置了有参构造器,则必须设置无参构造器,因为默认的构造器将不能被调用)public Student() {}// 有参构造器(姓名和年龄)--> 创建对象时,同时可以存入 姓名,省去了单独使用setName() setAge()进行赋值的操作public Student(String name, int age, double height, double weight, String sex) {this.name = name;this.age = age;this.height = height;this.weight = weight;this.sex = sex;}// Getter 和 Setter 方法(封装体现)// 获取 姓名public String getName() {return name;}// 设置 姓名public void setName(String name) {this.name = name;}// 获取 年龄public int getAge() {return age;}// 设置 年龄public void setAge(int age) {this.age = age;}// 设置 身高public double getHeight() {return height;}// 获取 身高public void setHeight(double height) {this.height = height;}// 获取 体重public double getWeight() {return weight;}// 设置 体重public void setWeight(double weight) {this.weight = weight;}// 获取 性别public String getSex() {return sex;}// 设置 性别public void setSex(String sex) {this.sex = sex;}// 打印信息public void printInfo() {System.out.println("姓名:" + name + ",年龄:" + age + ",身高:" + height + ",体重:" + weight);}
}
Test.java 文件
====== Test.java ======
package zhenglonghao.opp.student;public class Test {public static void main(String[] args) {// 使用无参构造器创建对象Student s1 = new Student();// 因为所有的成员变量都是 private(私有的),所以无法直接访问,需要使用 setter 方法进行赋值// setter方法就是 设置 成员变量 的方法,如s1.setName("ZZZ");就是设置姓名为ZZZ// 而所有的setter方法都是public (公有的),所以可以在类外进行调用s1.setName("ZZZ");s1.setAge(18);s1.setHeight(180);s1.setWeight(130);s1.setSex("男");// 输出信息s1System.out.println("对象s1信息:\n");s1.printInfo(); // 直接使用 public(公有) 修饰的 打印方法,可在类外进行调用System.out.println("\n------------------------\n");// 使用有参构造器创建对象// 如果直接传参进去,则就无需使用 setter 方法进行赋值Student s2 = new Student("ZLH", 18, 170, 120, "男");System.out.println("对象s2信息:\n");s2.printInfo();}
}
