java学习(八)面向对象特征之封装和调用

本文深入解析Java面向对象的封装特性,阐述其在保证数据安全性和简化接口调用方面的作用。通过实例演示如何利用private关键字进行数据隐藏,并通过get和set方法实现属性的安全访问与修改。

java学习(八)面向对象特征之封装和调用

封装:是面向对象的三大特征之一,作用有两个

  • 保证内部结构安全

  • 屏蔽复杂,暴露简单

封装从代码级别来看有啥用?

  • 对于代码调用的人来说,不需要关心代码的复杂实现,只需要通过简单的入口就可以访问了

  • 在类体里的重要数据可以封装起来,让外部人员不能随意访问,保证数据安全性

复习一下方法的定义

【修饰符列表】返回值类型 方法名(参数列表){}

修饰符列表一般为public static,但是也有不带static的实例方法(对象方法)

有static的方法和没有static的方法怎么调用?

  • 有static的方法是静态方法,使用类名.方法名();调用即可, 如果在当前类中,类名也可以省略直接:方法名();

  • 没有static的方法称为实例方法,就是对象级别的方法。需要先new对象然后引用.方法();

  • 就是实例对象、实例方法调用都需要new对象去调用

代码

public class MethodTest{
    public static void main(String[] args){
​
        //类名.方法名();调用
        MethodTest.doSome();
​
        //省略类名直接调用
        doSome();
​
        MethodTest m1 = new MethodTest();
​
        //引用.方法名();才可以调用无static的方法
        m1.doOther();
    }
​
    //定义一个有static的方法
    public static void doSome(){
        System.out.println("doSome执行");
    }
​
    //定义一个无static的方法
    public void doOther(){
        System.out.println("doOther执行");
    }
}

怎么封装?

  • 私有化 private关键字

    • private关键字声明后,变量只能在当前类调用

  • 提供对外开放的入口

封装get和set方法读取和修改

  • 这样的方法定义的时候不能使用 static 关键字修饰,被称为实例方法 :set 和 get 方法访问的都是某个具体对象的属性, 不同的对象调用 get 方法获取的属性值不同,所以 set 和 get 方法必须有对象的存在才能调用。

  • 对象级别的 方法,不能直接采用“类名”调用,必须先创建对象,再通过“引用”去访问。

  • get方法要求:public 返回值类型 get + 属性名首字母大写(){

    ​ return;

    }

  • set 方法规范中要求是 public void set + 属性名首字母大写(一个参数){

    ​ xxx = 一个参数;

    }

public class Person{
​
    //封装,提供一个get和一个set接口
    private int age;
    
    //get方法
    public int getAge(){
        return age;
    }   
​
    //set方法
    public void setAge(int nianLing){
        if (nianLing<0 ||nianLing>150){
            System.out.println("您输入的年龄值不合法!请您重新赋值");
            return;  //只要有return语句执行,当前所在方法就结束
        }
        System.out.println("年龄合法才会执行这里------------------------------");
        age = nianLing;
    }
}
​

调用

public class PersonTest02{
    public static void main(String[] args){
​
        Person p1 = new Person();
​
        //int nianLing = p1.getAge();
​
        //System.out.println(nianLing);  //0
​
        p1.setAge(188);
​
        //System.out.println(p1.getAge());  //0
​
        p1.setAge(18);
        //System.out.println(p1.getAge());  //18
​
        p1.setAge(108);
        //System.out.println(p1.getAge());  //108
    //注:如果setAge时,传的变量不符合要求,return;执行,整个方法会结束。【该方法】后面的代码就执行不到
    }
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值