Java类private权限

Java类的相关概念和操作(1)

介绍:我们知道,在Java面向对象编程中,有一个非常重要的概念——类,类中有很多的属性和方法,接下来让我来给大家简单介绍一下这些常见的属性和方法以及操作(private权限)

Class 中有很多的属性,通常我们在初始化一个类的时候,一般来说类中会提供构造函数来辅助我们对类进行初始化例如:

class Student{
 String name;
 String classname;
 String phone;

 public Student(String name,String classname,String phone){
  this.name = name;
  this.classname = classname;
  this.phone = phone;
 }
}

上面展示的就是一个类的构造函数,一般来说,我们将类的属性封装在类中,用private修饰权限,拒绝外部代码来访问我们的私有属性。为了避免一下这种写法:

class Student{
    String name;
    String phone;
}
class doMain{
    public static void main(String[] args){
        Student st = new Student();
        st.name = "Jack Wang";
        st.phone = "010-1234567";
        System.out.println(st.name);
        System.out.println(st.phone);
    }
}

这种方式去初始化一个类的话,首先就我们来看的话,这么写长得太难看,再者说一定程度上破坏了我们的封装性。所以大多数时候会采用下面这种方式来进行类的初始化。

class Student{
   private String name;
   private String phone;
    
 public String getName(){
     return name;
 }
 public void setName(String name){
     this.name = name;
 }
 public String getPhone(){
     return phone;
 }
 public void setPhone(String phone){
     this.phone = phone;
 }
 public Student(){

 }
 //这里解释一下为什么两种构造函数都写上,我们知道,在类初始化的时候,如果没有写构造函数,那么默认的就是无参的构造函数;但是我们写了构造函数的话,那么编译器默认调用的就是我们写的构造函数,但是参数列表不匹配的话就会报错,所以一般来说,两种构造函数我们都写上
 public Student(String name,String phone){
     this.name = name;
     this.phone = phone;
 }
}
class doMain{
    public static void main(String[] args){
        Student st = new Student("Jack Wang","12345678");
        System.out.println(st.getName+" "+st.getPhone());
        st.setName("JackMa");
        System.out.println(st.getName());
    }
}
//这里解释一下为什么用getName()来访问变量,我们观察到Student类中,name已经是private权限的,不供外部代码访问,想要访问和修改该成员变量的值只能通过提供的set和get方法

我们注意到,有private成员变量,那是不是也有private方法呢?
答案是不言而喻的,既然存在private成员变量,肯定也有private方法,private方法,权限和private变量类似,只允许在类中使用,而不能提供给外部代码调用!
例如:

public class Main {
    public static void main(String[] args) {
        Person ming = new Person();
        ming.setBirth(2008);
        System.out.println(ming.getAge());
    }
}

class Person {
    private String name;
    private int birth;

    public void setBirth(int birth) {
        this.birth = birth;
    }

    public int getAge() {
        return calcAge(2019); // 调用private方法
    }

    // private方法:
    private int calcAge(int currentYear) {
        return currentYear - this.birth;
    }
}

版权声明:本文为ShabbyWang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。