java中封装的实现方法详解

 更新时间:2018年10月29日 08:40:02   投稿:laozhang  
在本篇文章里我们给大家详细分享了关于java中封装的实现方法,有需要的朋友们跟着学习下。

1、封装是什么?以及为什么要进行封装?

通常情况下可以给成员变量赋值一些合法但不合理的数值,这种情况在编译阶段和运行阶段都不会报错或给出任何的提示信息,此数值虽然合法但与现实生活不符;为了避免上述问题的发生,就需要对成员变量进行密封包装处理来保证该成员变量的合法合理性,这种机制就叫做封装。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。

2、如何进行封装?

(1)私有化成员变量,使用private关键字修饰;

(2)提供公有的get和set方法,在方法体中进行合理值的判断,使用public关键字修饰;

(3)在构造方法中使用set方法进行合理值的判断;

3、事例如下/*Person.java*/

/*
   编程实现Person类的封装
 */
public class Person{
  //1.私有化成员变量,使用private关键字修饰
  private String name; 
  private int age;
  private String country;
  //使用static关键字修饰成员变量表示提升为类层级只有一份被所有对象共享
  //public static String country;
 
  //3.在构造方法中调用set方法进行合理值的判断
  public Person(){
  }
  public Person(String name, int age, String country){
    setName(name);
    setAge(age);
    setCountry(country);
  }
 
  //2.提供公有的get和set方法,在方法体中进行合理值的判断
  public String getName(){
    return name;
  }
  public void setName(String name){
    this.name = name;
  }
  public int getAge(){
    return age;
  }
  public void setAge(int age){
    if(age > 0 && age < 150){
      this.age = age;
    }else{
      System.out.println("年龄不合理!!!");
    }
  }
  public String getCountry(){
    return country;
  }
  public void setCountry(String country){
    this.country = country;
  }
 
  public void show(){
    System.out.println("我是" + getName() + ",今年" + getAge() + "岁了,来自" + getCountry() + "!");
  }
 
  //自定义成员方法描述吃饭的行为
  public void eat(String food){
    System.out.println(food + "真好吃!");
  }
  //自定义成员方法描述娱乐的行为
  public void play(String game){
    System.out.println(game + "真好玩!");
  }
}

相关文章

  • SpringMVC一步到位精通拦截器

    SpringMVC一步到位精通拦截器

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行。本文将详细讲讲SpringMVC中拦截器的概念及入门案例,感兴趣的可以尝试一下
    2022-12-12
  • Spring session redis 修改默认的序列化方法(案例)

    Spring session redis 修改默认的序列化方法(案例)

    这篇文章主要介绍了Spring session redis 修改默认的序列化方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Java数据结构之堆(优先队列)的实现

    Java数据结构之堆(优先队列)的实现

    堆(优先队列)是一种典型的数据结构,其形状是一棵完全二叉树,一般用于求解topk问题。本文将利用Java语言实现堆,感兴趣的可以学习一下
    2022-05-05
  • java中实现四则运算代码

    java中实现四则运算代码

    本文给大家分享了几个java中实现四则运算的代码,有个人的也有网友的,代码写的不是很好,难免会有BUG,忘发现BUG的亲们能提醒我下,好让我改进
    2015-08-08
  • Java编程中使用throw关键字抛出异常的用法简介

    Java编程中使用throw关键字抛出异常的用法简介

    这篇文章主要介绍了Java编程中使用throw关键字抛出异常的用法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • SpringBoot环境配置知识总结

    SpringBoot环境配置知识总结

    今天带大家了解SpringBoot环境配置的相关知识,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Java使用LinkedHashMap进行分数排序

    Java使用LinkedHashMap进行分数排序

    这篇文章主要介绍了Java使用LinkedHashMap进行分数排序的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • SpringBoot视图解析实现原理深入分析

    SpringBoot视图解析实现原理深入分析

    视图解析其实就是SpringBoot某一个controller的方法执行完成之后,它是跳转到那个页面。由于我们springboot项目默认打包为jar包,是形成压缩包的形式,而jsp又不支持压缩,所以我们SpringBoot不知JSP的,需要引入第三方模板引擎才可以处理
    2022-10-10
  • Java值得使用Lambda的8个场景合集

    Java值得使用Lambda的8个场景合集

    可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,但毕竟2023年了,JDK都出了那么多新版本,是时候试试Lambda了
    2023-08-08
  • DoytoQuery中的查询映射方案详解

    DoytoQuery中的查询映射方案详解

    这篇文章主要为大家介绍了DoytoQuery中的查询映射方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论