Home  >  Article  >  类库下载  >  The difference between the four access modifiers in Java and the detailed explanation of the whole process

The difference between the four access modifiers in Java and the detailed explanation of the whole process

高洛峰
高洛峰Original
2016-10-14 13:57:591814browse

 Client programmer: A class consumer who uses data types in his application. His goal is to collect various classes for rapid application development.

 Class creator: A programmer who creates a new data type with the goal of building a class.

 The reasons why access control exists: a. To prevent client programmers from touching parts they should not touch; b. To allow library designers to change the internal working methods of classes without worrying about affecting client programmers

java The four keywords: public, protected, default, private (they determine who can use what is defined immediately)

Scope of application

   Access rights Class Package Subclass Other packages

       ∨ ∨                                                                                                                                                             × × × (Package access rights, that is, available in the entire package Accessed)

                                       ulate element that cannot be accessed by anyone except the type creator and the internal method of the type]​​

Test class)

package com.zq.demo.test1;
/**
 * 类内
 * @author Administrator
 */
public class Person {
    public String uname = "王五";
    
    public void introduceMyself(){                
        System.out.println(uname);             
    }
}

package com.zq.demo.test1;
//同一个包
public class Student {
        Person p =  new Person();
    public void test(){
        System.out.println(p.uname);
    }
}
package com.zq.demo.test1;
//子类
public class Teacher extends Person{
    public int age;
    Person p = new Person();
    public void test1(){
        System.out.println(p.uname);
    }
}
package com.zq.demo.test2;
//不同包
import com.zq.demo.test1.Person;

public class Parents {
    public String uname = "haha";
    Person p = new Person();
    public void test2(){
        System.out.println(p.uname);
    }
}

The results of the test class show that public can be accessed in the above

Use the same four classes to test protected

The difference between the four access modifiers in Java and the detailed explanation of the whole processAfter changing the uanme in Person to protected, the class Parents reported an error The field Person .uname is not visible (indicating that it cannot be cross-packaged)

The other three have no impact

Explaining that except for cross-package, the others do not affect access

The difference between the four access modifiers in Java and the detailed explanation of the whole processprivate

Only accessible in this class but with the help of Person The set and get methods related to uname in the class can be accessed

The difference between the four access modifiers in Java and the detailed explanation of the whole process

The difference between the four access modifiers in Java and the detailed explanation of the whole process

default

The difference between the four access modifiers in Java and the detailed explanation of the whole process

. The test results indicate that it can only be accessed in this package. In other packages, even if it is an inheritance relationship, it cannot be accessed

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn