骖六龙行御九州之第八天——封装、this

一、封装

  • 什么是封装?

    • 特点:看不到内部结构,提供外部访问方式

  • 封装场景

    • 应用场景

      • 方法就是一个最基本的封装体。

      • 类其实也是一个封装体。

    • 封装优点

      • 提高了代码的复用性

      • 隐藏了实现细节,还要对外提供可以访问的方式

      • 提高了安全性

      • 便于调用者使用。这是核心之一,也可以理解为就是封装的概念

  • 关键字

    • private概述

    • 在Java中表示私有,所修饰的内容,只能在本类中访问

class person {
    private int Id;
    private String name;
}                         //只要将Person的属性和行为私有起来,这样就无法直接访问。

只能内部类访问自己,外部没法访问, private(私有,权限修饰符)

  • 如何解决无法访问的问题

    • public class Demo {
              public static void main(String[] args) {
              student stu = new student();
              stu.m();
              
          }
      }
package 封装私有;
​
public  class student {
     private  int age  ;
     private  String name;
    public int m() {
        return age;
    }
}
  • 曲线救国(调用方法,用它内部方法去调用他内部私有数据)

  • 代码操作

    • package 曲线救国02.取值操作01;
      ​
      public class Demo {
          public static void main(String[] args) {
              Student student = new Student();
              int a =  student.m();
              System.out.println(a);
      ​
          }         //赋值取值
      }
  • 赋值取值

    • package 曲线救国02.赋值操作02;
      ​
      public class Demo {
          public static void main(String[] args) {
              Student student = new Student();
              int a =  student.m();
              System.out.println(a);
              //赋值
              student.m2(100);
              //测试
              System.out.println(student.m());
      ​
      ​
          }
      }
    • package 曲线救国02.赋值操作02;
      ​
      public class Student {
      ​
          private int age;
          //取值操作
          public int  m(){
      ​
              return age;
          }
          //需求:赋值
          public void  m2(int a){
      ​
              age = a;
          }
      }
  • set和get方法

    • 为了遵循Java见名思意的命名规则,故此提出了set和get方法

    • get

    • 格式:getXxx------(Xxx变量名)

public class Student {
​
    private int age=100;
    //为了遵循见名思意原则,我们以后取值的操作不能随便起名
    //getXxx------(Xxx变量名)
    public int  getAge(){
​
        return age;
    }
}
  • set

    • 格式:setXxx (Xxx:变量)

public class Student {
​
    private int age;
    //取值操作
    public int  getAge(){
​
        return age;
    }
    //需求:赋值
    //setXxx (Xxx:变量)
    public void  setAge(int a){
​
        age = a;
    }
}

二、this方法

  • 什么是this?

  • 前奏:Java为什么要预留this关键字?

    • 因为要区分成员变量和局部变量

package this关键字04;
​
public class A {
​
​
    private  int x;//成员变量
    //见名思意命名规则
    public void setX(int x){//局部变量 就近原则
        System.out.println("x赋值前:"+x);
        this.x= x;
        System.out.println("x赋值后:"+x);
    }
​
    public void getX(){
​
​
        System.out.println(x);
    }
}
package this关键字04;
​
public class Demo {
    public static void main(String[] args) {
        A a = new A();
        a.setX(100);
​
        a.getX();
    }
}
  • 成员变量和局部变量同名问题

    • 可以在成员变量名前面加上this.来区别成员变量和局部变量

  • this的应用

  • 学习this的用法之后,现在做个小小的练习。

    • 需求:在Person类中定义功能,判断两个人是否是同龄人

package this练习05;
​
public class Person {
​
    private int age;
    private String name;
​
    public int getAge() {
        return age;
    }
​
    public void setAge(int age) {
        this.age = age;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    //方法
    public boolean bj(int age){
​
        return  this.age > age ? true  : false;
    }
}
package this练习05;
​
public class Demo {
    public static void main(String[] args) {
        Person person = new Person();//0x0011
        person.setAge(18);
        Person p2 = new Person();//0x0022
        p2.setAge(20);
        boolean f = person.bj(p2.getAge());
        System.out.println(f);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值