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

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

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方法
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值