JAVA核心技术I---JAVA基础知识(查漏补缺private,static)
一:private对于类和对象(同C++)
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); } }
二:子类对于父类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 priSonTest extends priTest{ public void test() { System.out.println("nothings"); } }
public class PrivateTest { public static void main(String[] args) { priSonTest p2= new priSonTest(); p2.setAge(16); System.out.println(p2.getAge()); } }
二是可以满足一的
三: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