java面向对象编程(4)

65 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情

封装

private关键字实现封装

  • private关键字修饰成员变量
//private修饰的成员访问权限在类中
class People{
    private String name;   //private修饰成员变量,实现封装
    private String sex;   //private修饰 sex 和 name成员属性的访问权限只能在类中
}
public class Test{
    public static void main(String[] args) {
        People people = new People();
        people.name; //error 被private不能在类外访问
    }
}

在这里插入图片描述可能你会奇怪,private修饰的成员确实实现了封装,类外都访问不到,那我们要实现类外访问呢?

getter和setter方法

我们是否想过,虽然我们的成员变量被private修饰了,无法在类外访问,我们可以通过其他方法接口,间接实现对private变量的访问。 getter方法

class People{
    private String name;   //private修饰成员变量,实现封装
    private String sex;   //private修饰 sex 和 name成员属性的访问权限只能在类中
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
}
public class Test{
    public static void main(String[] args) {
        People people = new People();
        //people.name; //error 被private不能在类外访问
        //通过getter方法对private属性实现间接访问
        System.out.println("name:"+people.getName());
        System.out.println("sex:"+people.getSex());
    }
}

在这里插入图片描述setter方法 我们可以通过在类中创建setter方法接口将private私有属性修改!达到在类外间接访问私有属性的目的!

class People{
    private String name;   //private修饰成员变量,实现封装
    private String sex;   //private修饰 sex 和 name成员属性的访问权限只能在类中
      //setter方法,可以在类外传参,在类中将私有属性修改
    public void setName(String name) {
        this.name = name;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
}
public class Test{
    public static void main(String[] args) {
        People people = new People();
        //通过setter方法设置私有属性
        people.setName("bug郭");
        people.setSex("男");
        //通过getter方法对private属性实现间接访问
        System.out.println("name:"+people.getName());
        System.out.println("sex:"+people.getSex());
    }
}

在这里插入图片描述gettersetter快捷方式IDEA下,编译器提供了settergetter方法的快捷方式 1.鼠标右键 在这里插入图片描述 2.点击Generate 在这里插入图片描述 我们可以选择我们要进行的操作,setter方法,getter方法或者toString方法 ,都可以一键生成!

我们也可以直接快捷键,Alt + Insert