一篇文章带你深入了解Java封装

 更新时间:2021年08月01日 09:36:04   作者:Wxbbbbb  
Java中的封装是将数据(变量)和作用于数据(方法)的代码作为一个单元包装在一起的机制。 在封装中,类的变量将从其他类隐藏,并且只能通过当前类的方法访问

如何实现封装

可以分为两步:

第一步:将类的变量声明为private。

第二步:提供公共set和get方法来修改和获取变量的值。

代码展示

public class User {
    private String name;
    private int age;
    private int id;
    private String address;
    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public int getId(){
        return id;
    }
    public String getAddress(){
        return address;
    }
    public void setName(String Newname){
        name = Newname;
    }
    public void setAge(int Newage){
        age = Newage;
    }
    public void setAddress(String Newaddress){
        address= Newaddress;
    }
}

class Mainclass{
     public static void main(String[] args) {
        User user = new User();
        user.setAge(18);
        user.setName("Kevin");
        user.setAddress("江苏");
        System.out.println("Name:"+user.getName()+",Age:"+user.getAge());
    }
}

上面就是一个写好的封装啦 但是有很多用户,很多属性,写起来就很麻烦,下面提供一种一行代码搞定的方法

构造方法

public User{
// 方法名与类名同名 没有返回值结构 其他与普通方法无异
}

注意点:

对于每个类而言,都默认具有一个隐式的空参数构造方法 如果显式写了任意一个构造方法,空参数构造方法都会被覆盖

代码展示

public class User {
    private String name;
    private int age;
    private int id;
    private String address;
    public User(String name, int age, int id, String address) {
        this.name = name;
        this.age = age;
        this.id = id;
        this.address = address;
    }


    public int getAge(){
        return age;
    }
    public String getName(){
        return name;
    }
    public int getId(){
        return id;
    }
    public String getAddress(){
        return address;
    }
    public void setName(String Newname){
        name = Newname;
    }
    public void setAge(int Newage){
        age = Newage;
    }
    public void setAddress(String Newaddress){
        address= Newaddress;
    }
    public void setId(int Newid){
        id = Newid;}
}


class Mainclass{
     public static void main(String[] args) {
        User user = new User("kevin",18,001,"江苏");//一行代码就能赋值啦

        System.out.println("Name:"+user.getName()+",Age:"+user.getAge());
    }
}

总结

封装的优点

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

本篇文章就到这里了,希望能给你带来帮助,也希望您关注脚本之家的更多内容!

相关文章

  • Java流程控制break和continue

    Java流程控制break和continue

    这篇文章主要介绍了Java流程控制break和continue,下面文章围绕break和continue的相关资料展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2021-12-12
  • Spring Cloud灰度部署实现过程详解

    Spring Cloud灰度部署实现过程详解

    这篇文章主要为大家介绍了Spring Cloud灰度部署实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Java特性 Lambda 表达式和函数式接口

    Java特性 Lambda 表达式和函数式接口

    这篇文章主要介绍了Java特性 Lambda 表达式和函数式接口,Lambda表达式基于函数式编程思想,也可以称为闭包,是Java 8引入的重要新特性, Lambda允许把函数作为一个方法的参数
    2022-06-06
  • java随机抽取指定范围内不重复的n个数

    java随机抽取指定范围内不重复的n个数

    这篇文章主要为大家详细介绍了java随机抽取指定范围内不重复的n个数,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • mybatis 实体类字段大小写问题 字段获取不到值的解决

    mybatis 实体类字段大小写问题 字段获取不到值的解决

    这篇文章主要介绍了mybatis 实体类字段大小写问题 字段获取不到值的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 使用SpringBoot获取resources文件路径

    使用SpringBoot获取resources文件路径

    这篇文章主要介绍了使用SpringBoot获取resources文件路径,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java 画时钟遇到的问题及解决方案

    Java 画时钟遇到的问题及解决方案

    我是一个刚入门的小菜鸟,希望我写的东西可以帮助和我一样刚入门的兄弟们少走一些弯路,也希望大佬们可以多指点指点我。感谢!解决在画时钟遇到的问题让我花费不少时间...说两个困扰我比较久的
    2021-11-11
  • 详解Struts2中json 相互引用死循环解决办法

    详解Struts2中json 相互引用死循环解决办法

    本篇文章主要介绍详解Struts2中json 相互引用死循环解决办法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Java的代理模式你真的了解吗

    Java的代理模式你真的了解吗

    这篇文章主要为大家详细介绍了Java的代理模式,结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题,包括:代理模式、桥接模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式
    2022-03-03
  • SpringBoot2.0集成MQTT消息推送功能实现

    SpringBoot2.0集成MQTT消息推送功能实现

    这篇文章主要介绍了SpringBoot2.0集成MQTT消息推送功能实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论