Java类的封装

目录

1.什么是类的封装?

2.如何实现类的封装

1.private操作符

2.get与set 

1.语法格式

2.封装演示


1.什么是类的封装?

隐藏对象的属性和实现细节,仅对外提供公共访问方式。

类的封装可以让使用者使用更加简单,数据也会更加安全,将复杂的逻辑封装起来,对外只提供简单的操作方法

2.如何实现类的封装

1.private操作符

在类属性的前面加上private操作符可以类的属性私有化,数据只能在本类中访问,其他类无法访问

package 集成开发;//这是一个包
//注意:以下两个类子一个Java源文件中,只是为了大家方便复制代码,正常开发中强烈不建议在一个
//Java文件中编写两个类


//1.我们先看看不对类进行封装的结果
//用户类
public class User {
//这里没有对类进行封装
     int age;
     String name;
}

//测试类
class UserTest{
    public static void main(String[] args) {
        //创建一个User类型的对象将地址保存在变量us1中
        User us1=new User();
        us1.age=12;
        us1.name="小明";
        System.out.println(us1.age);//12
        us1.age=-100;
        System.out.println(us1.age);//-100
//可以看到,我们可以子啊测试类中对用户类对象进行随意的更改,这对数据来说是不安全的
    }


//2.再来看看我们封装类后的结果

package 集成开发;

//用户类
public class User {
    //使用private操作符可以将类进行封装
     private int age;
     private String name;
}

//测试类
class UserTest{
    public static void main(String[] args) {
        //创建一个User类型的对象将地址保存在变量us1中
        User us1=new User();
        us1.age=12;//!报错不能在测试类中访问us1的age属性,赋值失败
        us1.name="小明";//!报错不能在测试类中访问us1的name属性,赋值失败
        System.out.println(us1.age);

    }


}

结论:对类进行封装后可以在其他类创建这个类的对象,但是无法访问这个对象的属性,原则上来说这确实提高了数据的安全,但是过于绝对的安全造成程序的无法运行

2.get与set 

set-->修改,get-->读取

1.语法格式

set语法格式:
            public void set+属性名首字母大写(形参){
                   属性=形参;
             }

get语法格式:
            public 返回值类型 get+属性名首字母大写(形参){
                   return 属性;
             }

注释:没有static的变量和方法都是需要对象参与的,有static的变量和方法不需要对象的参与
      换句话说就是:
      1.方法定义中有static调用为:类名.方法名(形参);
      2.方法定义中没有static调用方法为:引用.方法名(形参)

通过get与set方法就可以在外部对我们的私有属性就像访问和修改

2.封装演示

package 集成开发;

//用户类
public class User {
    //使用private操作符可以将类进行封装
     private int age;
     private String name;
//修改age的方法
     public void setAge(int age1){
         if (age1<0||age1>150){
             System.out.println("您输入的名字不合法");
             return;//切记一定要加return
         }
         age=age1;
     }
//获取age的方法
    public int getAge(){
        return age;
    }
//修改name的方法
    public void setName(String name1){
        name=name1;
    }
//获取name的方法
    public String getName(){
        return name;
    }

}

//测试类
class UserTest {
    public static void main(String[] args) {
//创建User类型对象
        User us1 = new User();
        User us2 = new User();
//调用修改age方法对us1与us2对象的age属性赋值
        us1.setAge(18);
        us2.setAge(-100);//!报错,您输入的名字不合法
//调用获取age方法获取age的值
        System.out.println(us1.getAge());//18
        System.out.println(us2.getAge());//0



    }
}

注意:set方法的判断语句一定在不满足情况下加return才能结束方法执行,否则既是不成立按照
程序执行顺序既然会赋值

我们可以用Java编译软件中自带的自动生成set与get方法直接生成所有的方法(这里以IntelliJ IDEA 2019.1为例)

1.鼠标右击

2.在新的对话框点击下面的选项,之后将所有属性的方法全选上添加即可

  • 15
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值