면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
1. 액세스 제어 수정
대중 행동의 데이터 민영화
- 공공 : 공공, 모든 클래스
- 개인 : 개인이 클래스
- 보호 : 보호,이 클래스, 서브 클래스, 가방
- 기본값 : 가방 아무것도 작성,이 클래스,
- 액세스 수정 클래스 : 공공 및 기본
- 반원 수정 액세스 :이 네 가지 인 경우
2.static
2.1 정적 변수
- 정적으로 수정
- 변형 된 고정 부재 변수 데이터 구조가 아닌 개체로, 클래스에 속하며, 하나의 메소드 영역이
- 종종 클래스 이름을 통해 액세스.
- 사용하는 경우 : 사용하는 경우 모든 데이터 객체는 동일합니다
class Cat {
private int age;
private static int numOfCats;
public Cat(int age){
this.age = age;
System.out.println(++numOfCats);
}
}
Cat c1 = new Cat(2);
Cat c2 = new Cat(3);
2.2 정적 메소드
- 이 메소드를 호출 할 때의 방법은 일반적으로 특정 오브젝트에 대한 조작을 수반되며, 필요 암시 객체 참조를 전달하는 (이)
int d = p1.distance(p2);
//调用distance方法时,除了传递p2参数外,还隐式的传递了p1作为参数,在方法中的this关键字即表示该参数
- 호출시에있어서의 정적 변형이 특정 개체의 동작을 위해 요구되지 않고, 그 동작 결과는 클래스 이름을 직접 참조하여, 입력 파라미터에만 관련되어
double c = Math.sqrt(3.0 * 3.0 + 4.0 * 4.0);
//该方法在调用时,没有隐式的传递对象引用,因此在static方法中不可以使用this关键字
- 이것은 어떤 객체가없는 것을 의미하지 않는다 개체가. 액세스 인스턴스 변수이기 (위해) 때문에, 정적 방법은 직접 인스턴스 멤버에 액세스 할 수 없습니다
- 호출 할 때 특정 정적 오브젝트 없기 때문에 정적 메소드 내의 액세스 비 정적 부재 (의 부재)이 아니다. 행동의 방법은 정적 "도구 방법"및 "공장 방법"등을 제공하는 것입니다.
2.3 정적 블록
- 정적으로 수정
- 정적 블록도 한번만 실행될 수 있도록 클래스에 클래스가 자동으로 로딩하는 동안 수행된다 속하는 클래스는 한번만로드
- 때 사용하는 방법 : 그들은 종종로드하는 데 사용됩니다 / 정적 리소스를 초기화 (이미지, 오디오, 비디오)
class Foo{
static{
//类加载期间,只执行一次
System.out.println("Load Foo.class");
}
public Foo{
System.out.println("Foo()");
}
}
Foo foo = new Foo();
//输出的结果为:
//Load Foo.class
//Foo()
//Foo类加载时,运行静态块,在创建对象之前
3.final
- ------ 수정 변수 변수는 변경 될 수 없다
- --------- 방법을 수정하는 방법을 재정의 할 수 없습니다
- 클래스는 상속 될 수 없습니다 ------------ 수정 된 클래스
package oo.day04;
//final演示
public class FinalDemo {
public static void main(String[] args) {
}
}
class Zoo{}
final class Xoo extends Zoo{} //可以继承别的类
//class Yoo extends Xoo{}//错误,final修饰类不能被继承
class Loo{ //final修饰方法---不可被重写
void show(){}
final void say(){}
}
class Moo extends Loo{
void show(){}
//void say(){} //错误,final方法不能被重写
}
class Koo{ //final修饰变量---不能改变,用得比较少
final int a = 5; //声明同时初始化
final int b;
Koo(){
b = 5; //先声明,再在构造中初始化
}
void show(){
final int c; //应用率几乎为零
//System.out.println(c);//错误,c没有值
c = 5;
System.out.println(c);
}
void say(){
//a = 88; //错误,final修饰的变量不能改变
}
}
- 수정 된 최종 고정 부재 변수라는 상수를 초기화하는 동시에 선언해야한다. 변경할 수 없습니다
- 정적 최종 상수는 컴파일시에 대체됩니다
class Foo{
public static final int NUM = 100;
}
class Goo{
public static void main(String[] args){
System.out.println(Foo.NUM);
//代码编译时,会替换为:System.out.println(100);
}
}
보충
멤버 변수
1. 인스턴스 변수 :
1) 개체로는, 힙의 존재 속하는
2) 여러 개체가있는 인스턴스 변수의 수
. 3) 오브젝트 이름을 통해 액세스되어야
2. 정적 변수
1) 클래스에 속한다는 영역의 방법이있다
2) 하나
3) 자주 클래스 이름을 통해 액세스.
class Aoo{
int a;//实例变量
static int b;//静态变量
}