JavaSE - 面向对象的三大特性之继承 (八)

本文详细介绍了Java中封装的概念,包括属性私有化、提供get/set方法,以及封装的重要性和小结。通过示例代码展示了如何对数据进行有效性检测,确保数据安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目前程序存在的问题
无法保证数据的安全性,同时也无法保证数据的有效性

demo:在这里插入图片描述

二、封装的要求

1.private :私有的,被private 修饰的内容只能在类的内部使用

2.为私有的属性提供公开的get/set方法

  • 为属性赋值:set方法
    public void set属性名(数据类型 变量名){
            this.属性名 = 变量名;
    }
    注意:set属性名 --》属性名首字母大写
              形参数据类型取决于 赋值 的属性数据类型
  • 获取属性值:get方法
    public 数据类型 get属性名(){
           return this.属性名 ; // this. 可以省略
    }
    注意:get属性名 —》属性名首字母大写
    返回值的数据类型取决于 访问的属性数据类型
    在这里插入图片描述
public class TestStudent2{
 public static void main(String[] args){
  Student s = new Student();
  //s.name = "赵旭";
  s.setName("赵旭");
  //s.age = 380;
  // 外界为私有化的属性赋值:set
  s.setAge(38);
  //s.score = 99.0;
  s.setScore(99.0);
  // 访问私有的属性时:get
  System.out.println(s.getName()+"\t"+s.getAge()+"\t"+s.getScore());
  Student s2 = new Student("张飞",999,89.0);
  System.out.println(s2.getName()+"\t"+s2.getAge()+"\t"+
              s2.getScore());
 }
}
class Student{
 private String name;
 private int age; // 0~200
 private double score;// 0~100
 
 public Student(){}
 public Student(String name,int age,double score){
  this.name = name;
  //this.age = age;
  setAge(age);
  //this.score = score;
  setScore(score);
 }
 
 // set:为私有属性赋值(0~150)
 public void setAge(int age){
  // 进行数据有效性检测
  if(age>=0 && age <=150){
   this.age = age;
  }else{
   System.out.println("年龄数据无效~");
  }
 }
 // get:获取私有属性的值
 public int getAge(){
  return this.age; //this. 可以省略
 }
 // name : set
 public void setName(String name){
  this.name=name;
 }
 public String getName(){
  return this.name;
 }
 
 // score
 public double getScore(){
  return this.score;
 }
 public void setScore(double score){
  if(score>=0 && score<=100){
   this.score=score;
  }else{
   System.out.println("分数输入有误...");
  }
 }
}
三、封装的意义
  • 保护数据的安全性,可以对数据进行有效性检测
  • 对外只提供对应的功能,但是屏蔽具体实现的细节
四、封装小结
  • 属性私有化:private修饰符属性
  • 为私有化的属性提供公开的 get/set方法
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值