【Java】封装性、getter与setter方法、以及构造方法的作用

本文通过实例讲解了封装性的重要性,介绍了如何通过private关键字实现属性私有化,以及使用getter/setter方法控制数据访问权限。同时讨论了构造方法的作用,包括有参构造方法用于对象初始化和无参构造方法(缺省构造)的使用。
摘要由CSDN通过智能技术生成

 1.封装性

用一个简单的代码案例展开:

public class People {
    int age;
    String name;
}

public class Test {
    public static void main(String[] args) {
        People people = new People();
        people.name = "张三";
        people.age = 28;
        System.out.println(people.name);
        System.out.println(people.age);
 
        people.age = -1000;
        System.out.println(people.age);
    }
 
}
 
测试结果:
张三
28
-1000

人怎么可能有负数的年龄,这样很不合理。其他类随便访问,而且随便修改值,这样很不安全。

为什么要封装?好处是?

封装把复杂的事物变成简单的事物,通过一个操作入口。
封装之后才会形成真正的对象,真正的独立体。
封装意味着可以重复使用,适应性强、安全性高。
封装步骤:

所有属性私有化,使用private关键字就行修饰。(private表示私有,修饰的数据只能在本类中访问)
有private修饰但是我还想在其它类访问怎么办——>使用getter/setter方

2.getter/setter方法

下面的例子通过private来就行封装,所以其他类通过(引用.变量)的方式访问不了了,必须通过(引用.方法)来访问,而方法里面可以写限制的条件,这样就保证了安全性。

public class People {
    private int age;
    private String name;
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        if( age < 0 || age>150){
            System.out.println("你赋值的年龄不合法");
        }else{
            this.age = age;
        }
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}


public class Test {
    public static void main(String[] args) {
        People people = new People();
        people.setName("张三");                       //setter方法用来赋值
        people.setAge(28);
 
        System.out.println(people.getName());        //getter方法用来取值
        System.out.println(people.getAge());
 
        people.setAge(-1000);						//这个条件被限制了,所以没有改变到值
        System.out.println(people.getAge());		//输出原来的值
 
    }
 
}
 
测试结果:
张三
28
你赋值的年龄不合法
28

注意:setter方法和getter方法采用自动生成。如果不是自动生成,必须按照他的语法规则来写。

3. 构造方法

构造函数(constructor)是与new运算符一起使用在创建对象的语句中 。也就是说,只要你new一个对象出来,就会相应地调用这个类的构造方法。有参数的构造方法可以对对象进行初始化,但建议写了有参的构造方法后再写一个无参的空的构造方法,便于创建一个对象而不给它的成员变量赋初值。

其作用具体有:

1、用来创建对象
2、为对象成员变量赋初始值

!!!要注意,自己写了有参的构造方法,编译器是不会再补充一个无参构造方法的。

上面我们知道setter可以为变量赋值,而构造方法的作用中也有赋值功能。
当有很多变量时就要写很多的setter方法(这样太麻烦了),直接把他们变成构造方法。
代码可以改成:

public class People {
    private int age;
    private String name;
 
    public int getAge() {
        return age;
    }
/*
    public void setAge(int age) {
        if( age < 0 || age>150){
            System.out.println("你赋值的年龄不合法");
        }else{
            this.age = age;
        }
    }
*/
    public String getName() {
        return name;
    }
/*
    public void setName(String name) {
        this.name = name;
    }
*/
    public People(int age, String name) {				//默认的构造方法是空的,这里重载了构造方法并带有形参;
        if( age < 0 || age>150){
            System.out.println("你赋值的年龄不合法");
        }else{
            this.age = age;
        }
        this.name = name;
    }
}


public class Test {
    public static void main(String[] args) {
        People people = new People(28,"张三");			//这里通过new调用带有形参的构造方法,创建了对象并赋值
/*
        people.setName("张三");                       //setter方法用来赋值
        people.setAge(28);
*/
        System.out.println(people.getName());        //getter方法用来取值
        System.out.println(people.getAge());
 
        People people1 = new People(-1000,"张三");
        System.out.println(people.getAge());
 
    }
 
}
测试结果:
张三
28
你赋值的年龄不合法
28

有参数的构造方法主要就是用于对创建出来的对象进行初始化

没有参数的构造方法,又叫缺省构造方法。其实,你的类如果没有定义任何构造方法,Java的编译器会配上一个自动缺省构造方法,这个构造方法是空的,不做任何事情,只是为了满足编译需要。或者,你也可以自己写一个空的构造方法,在里边对一些属性赋值,或者执行一些其他操作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值