美文网首页
Java 基础 17 private、this关键字和封装

Java 基础 17 private、this关键字和封装

作者: 小熊先生很不开心 | 来源:发表于2018-01-29 10:17 被阅读10次

1.1 private关键字的概述和特点

1.1.1private关键字

  • private关键字:
    • 是一个权限修饰符。
    • 可以修饰成员(成员变量和成员方法)
    • 被private修饰的成员只在本类中才能访问。

1.1.1.1案例代码

package com.itheima_01;
/*
 * 直接使用对象名访问成员变量,会存在数据的安全问题
 * 这个时候,我们就应该思考能不能让外界不要直接访问成员变量?
 * 能
 * 如何实现呢?
 *      用private关键字
 * private:
 *      是一个修饰符
 *      可以修饰成员变量,也可以修饰成员方法
 *      被private修饰的成员只能在本类中被访问
 * 
 * 针对被private修饰的成员变量,我们会相应的给出getXxx()和setXxx()用于获取和设置成员变量的值,
 * 方法用public修饰
 */
public class Student {
    String name;
    //int age;
    private int age;
    
    public void setAge(int a) {
        if(a<0 || a>200) {
            System.out.println("你给的年龄有误");
        }else {
            age = a;
        }
    }
    
    public int getAge() {
        return age;
    }
    
    public void show() {
        System.out.println(name+"***"+age);
    }
}
package com.itheima_01;
/*
 * 测试类
 */
public class StudentTest {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();
        s.show();
        
        //给成员变量赋值
        s.name = "林青霞";
        //s.age = 30;
        //s.age = -30;
        //通过方法赋值
        s.setAge(-30);
        s.show();
    }
}

1.2 private修饰后的标准类代码

  • rivate最常见的应用:
    • 把成员变量用private修饰

    • 提供对应的getXxx()/setXxx()方法

1.2.1案例代码

package com.itheima_02;
/*
 * 学生类
 */
public class Student {
    private String name;
    private int age;
    
    public void setName(String n) {
        name = n;
    }
    
    public String getName() {
        return name;
    }
    
    public void setAge(int a) {
        age = a;
    }
    
    public int getAge() {
        return age;
    }
}
package com.itheima_02;
/*
 * 测试类
 */
public class StudentTest {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();
        System.out.println(s.getName()+"***"+s.getAge());
        
        //给成员变量赋值
        s.setName("林青霞");
        s.setAge(30);
        System.out.println(s.getName()+"***"+s.getAge());
    }
}

1.3 封装的概述和好处

  • 封装概述
    • 是面向对象三大特征之一
    • 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
  • 封装原则:
    • 将不需要对外提供的内容都隐藏起来。
    • 把属性隐藏,提供公共方法对其访问。
    • 成员变量private,提供对应的getXxx()/setXxx()方法
  • 好处:
    • 通过方法来控制成员变量的操作,提高了代码的安全性
    • 把代码用方法进行封装,提高了代码的复用性

1.4 this关键字的概述和使用

1.4.1 this关键字由来和使用

  • this:代表所在类的对象引用

  方法被哪个对象调用,this就代表那个对象

  • 什么时候使用this呢

  局部变量和成员变量重名

1.4.1案例代码

package com.itheima;

/*
 * 学生类
 * 
 * 目前代码中的n和a没有做到见名知意,需要改进。
 * 
 * 如果局部变量名称和成员变量名称一致,在方法中使用的时候采用的是就近原则。
 * 
 * 我们有没有办法把局部变量的name赋值给成员变量的name呢?
 * 有
 * 
 * 有什么办法呢?
 *      用this关键字就可以解决这个问题
 * 
 * this:代表所在类的对象引用
 *      方法被哪个对象调用,this就代表谁。
 * 
 * 使用场景:
 *      就是用于解决成员变量被隐藏的问题。       
 */
public class Student {
    private String name;
    private int age;

    public void setName(String name) { //"林青霞"
        //name = name;
        this.name = name;
    }

    public String getName() {
        return name;
        //return this.name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}

package com.itheima;

/*
 * 测试类
 */
public class StudentTest {
    public static void main(String[] args) {
        // 创建对象
        Student s = new Student();
        System.out.println(s.getName() + "---" + s.getAge());

        s.setName("林青霞");
        s.setAge(30);
        System.out.println(s.getName() + "---" + s.getAge());
    }
}

相关文章

  • Java 基础 17 private、this关键字和封装

    1.1 private关键字的概述和特点 1.1.1private关键字 private关键字:是一个权限修饰符。...

  • Java基础教程之实现接口

    Java基础教程之实现接口 在封装与接口中,private关键字封装了对象的内部成员。经过封装,产品隐藏了内部细节...

  • 闭包的好处

    起到封装变量的作用,类比java中的private。 java中private是其关键字,闭包在js中就是为了实现...

  • Java基础之三大特性

    封装,继承和多态是Java的三大特性。 封装:将属性私有化,使用private关键字修饰,提供公共的方法访问属性....

  • 2018-12-04

    封装:对外不可见,外部不能直接访问,只能通过接口来修改和获取。 封装使用的关键字就是private this关键字...

  • 封装和private关键字

    核心代码: 测试代码: 邮箱:ithelei@sina.cn 技术讨论群:687856230 GoodLuck

  • java se 封装

    封装 隐藏细节信息,对外界不可见1、方法就是一种封装2、private关键字也是一种封装private 进行修饰,...

  • 面向对象

    Java 语法基础 面向对象 ==面向对象有三宝:封装、继承和多态== 继承 关键字:extends 和 impl...

  • Java基础系列-封装与继承,this、super关键字的使用

    原创文章,转载请标注出处:《Java基础系列-封装与继承,this、super关键字的使用》 一、this关键字 ...

  • 面向对象:封装、类和对象

    1,封装: private关键字 private是一个权限修饰符,代表最小权限。 可以修饰成员变量和成员方法。 被...

网友评论

      本文标题:Java 基础 17 private、this关键字和封装

      本文链接:https://www.haomeiwen.com/subject/vqxxzxtx.html