JAVA核心技术I---JAVA基础知识(查漏补缺private,static) 一:private对于类和对象(同C++) 二:子类对于父类private成员变量的访问 三:static类静态变量的访问

private是只有这个类内部可以访问(类的成员函数和定义初始化)
private是类之间的限制,而不是对对象的限制《重点》
同类对象是可以直接访问对象的私有成员
class priTest{
    private int age;
    
    public void setAge(int a) {
        this.age=a;
    }
    
    public int getAge() {
        return this.age;
    }
    
    public int compare(priTest obj1) {
        int flag=0;
        if(this.age>obj1.age) {
            flag=1;
        }
        return flag;
    }
}


public class PrivateTest {
    public static void main(String[] args) {
        priTest p1= new priTest();
        priTest p2= new priTest();
        
        p1.setAge(15);
        p2.setAge(16);
        
        int ret=p1.compare(p2);
        
        System.out.println(ret);
    }
}

JAVA核心技术I---JAVA基础知识(查漏补缺private,static)
一:private对于类和对象(同C++)
二:子类对于父类private成员变量的访问
三:static类静态变量的访问

二:子类对于父类private成员变量的访问

虽然子类无法继承父类的private变量,但是其父类private成员变量和方法依然存在,可以通过父类的公共方法(未重写)去访问到那些字段和方法
class priTest{
    private int age;
    
    public void setAge(int a) {
        this.age=a;
    }
    
    public int getAge() {
        return this.age;
    }
    
    public int compare(priTest obj1) {
        int flag=0;
        if(this.age>obj1.age) {
            flag=1;
        }
        return flag;
    }
}

class *Test extends priTest{
    public void test() {
        System.out.println("nothings");
    }
}
public class PrivateTest {
    public static void main(String[] args) {
        *Test p2= new *Test();
        p2.setAge(16);
        System.out.println(p2.getAge());    
   }
}

JAVA核心技术I---JAVA基础知识(查漏补缺private,static)
一:private对于类和对象(同C++)
二:子类对于父类private成员变量的访问
三:static类静态变量的访问

二是可以满足一的

三:static类静态变量的访问

C++中static只能通过 类名.静态成员变量 进行访问
但是java中除此之外还有其他访问形式:
1.同C++
2.通过对象可以访问public static成员变量
3.可以通过静态成员函数访问
4.可以通过普通成员函数访问
注意:不允许通过静态成员函数去访问非静态成员变量或者方法
class Parent{
    public int a;
    
    public void start() {
        System.out.println("paretn");
    }
}

class Child extends Parent{
    public static int b=3;
    
    public void start() {
        System.out.println("child");
        System.out.println(a);
        a+=3;
        b+=6;  //方法四访问
    }
    
    public static void change(int c) {
        b+=c;  //方法三访问
    }
}


public class MaintTest {

    public static void main(String[] args) {
        Child c = new Child();
        c.start();
        
        c.change(5);
        System.out.println(Child.b);  //方法一访问
        System.out.println(c.b);  //方法二访问
        
        Child.change(3);
        System.out.println(Child.b);
        System.out.println(c.b);
        
    }

}
child
0
14
14
17
17