一.JAVA封装


1.封装的理解

封装是 JAVA 面向对象思想的 一 种特性,也是一种信息隐蔽的技术

2.封装的原则

将类中的某些信息隐藏起来,来防止外部程序直接访问,通过类中的方法实现对隐藏的信息调用和访问,使用对应的 get 和  set 方法。

3.封装的优点

    隐藏信息,有利于数据安全性

    举个例子,我们日常生活中的插座,如果没有封装外壳直接使用零线火线的话会比较危险,加上外壳封装之后使用起来既方便又安全

    调压着只需调用,无需了解实现过程

4.通过private 关键词声明使用

    //案例

  public class  Student{

   String name;//姓名

   int age;//年龄

}


上面定义了一个Student类,下面写一个Student01类进行测试


  public class Student01{

  public static void main(String[] args){

  //创建Student类型的对象

   Student s = new Student();

   System.out.println(s.age);//这里输出结果为0,因为没有设置值

   

    p.age = -10;//这个地方的数据不合理, 因为年龄都是整数,负数年龄怎么可能出来丫~

}

}


上面的Student01中人的年龄出现了-10,这显然是一个不合法的数据,所以应该将Student类中的age隐藏起来,不能让外界直接访问,需要使用private修饰符将age进行封装。


class Student{

  private String name;

   private int age;

}

  //添加了private修饰之后,外界无法直接访问age了

  //这时候需要提供两个办法供外界访问即set方法和get发放

  //对外提供两个公开的方法

  //set 赋值

  public void setAge(int agea){

  //安全控制

  if(agea<0 ||  agea>120){

  System.out.println("年龄不合法");

  return;  //返回值

}

   age = agea;//这里把agea赋值给age

}

  //get 读取\获取

public int getAge(){

   return age;

}

public void setName(String namea){

  name = namea;

}

public String getName(){

  return name;

}

}


//创建测试类

  public class Student02{

  public static void main(String[] args){

  //创建Student类型对象

  Student s = new Student();

  s.setName("小董");

  s.setAge(23);

  System.out.println("大家好,我叫"+s.setName);

  System.out.prinln("我今年的年龄"+s.set.Age+"岁");

}

}

输出结果为

大家好,我叫小董

我今年的年龄23岁

最新文章

  1. MAC上安装 HLA(High Level Assembly)
  2. 界面布局之表格布局TableLayout+TableRow
  3. 瞬间读懂什么是互联网思维、大数据、O2O、众筹、红海
  4. Python培训12期-day2作业-购物车
  5. 重新想象 Windows 8 Store Apps (63) - 通信: WebSocket
  6. 【JS Note】undefined与null
  7. 8个web前端的精美HTML5 &amp; CSS3效果及源码下载
  8. .NET中 MEF应用于IOC
  9. JavaScript引用类型之Array类型一
  10. app_offline.htm的作用
  11. json转义 使用 JavaScriptSerializer 时 需要添加的引用
  12. 第十七单元 Samba服务
  13. Tensorflow中的变量
  14. Android的GridView控件点击图片变暗效果
  15. weblogic服务目录迁移记录
  16. zookeeper图形工具——zkui
  17. 关于数组以及c#学习问题
  18. torch Tensor学习:切片操作
  19. python笔记-12 redis缓存
  20. VS 2015 IDE 不支持 MS SQL 2000 生成 dbml

热门文章

  1. angular 接入 IdentityServer4
  2. 服务扫描-dmitry、nmap、amap和服务识别
  3. 如果人生也能存档——C#中的备忘录模式
  4. CSS——文本超出隐藏显示省略号
  5. opencv+python实现图像锐化
  6. Spreading the Wealth
  7. &quot;Celsius=5/9*(Fahrenheit-32)&quot; and &quot;Celsius=5*(Fahrenheit-32)/9 &quot;
  8. ORA-39257: Data cannot be remapped for more than 10 columns.
  9. Python3笔记022 - 5.1 字符串常用操作
  10. dva的简介