A,이 키워드
1. 정의
-
- 이것은 클래스 속성, 방법 및 생성자를 호출 할 수 있습니다
- 그것은 현재 개체를 나타내는 또는 현재 생성되는 객체
- 내부적 방법, 즉 방법은 객체 참조 속하는
- 이 생성자는이 구성의 목적은 초기화 표시하기 위해 내부적으로 사용됩니다
(2)이 호출 구조
-
- 이 호출은 속성 / 방법
- ① 클래스의 방법에서, 우리는 현재 개체 속성 또는 메서드를 호출, "이. 등록"또는 "이. 방법"접근 방식을 사용할 수 있습니다. 그러나, 정상적인 상황에서, 우리는 생략 선택했습니다 "이.". 특별한 경우, 같은 이름의 속성 메서드의 매개 변수 클래스, 우리는 명시 적으로 "이. 변수"방식으로, 쇼를 사용해야하는 경우이 속성은 오히려 매개 변수보다 변수입니다
- 이 호출은 속성 / 방법
-
-
- ② 클래스의 생성자에서, 우리는 객체의 속성 또는 메서드가 현재 생성되는 호출 "이. 등록"또는 "이. 방법"접근 방식을 사용할 수 있습니다. 그러나, 정상적인 상황에서, 우리는 생략 선택했습니다 "이.". 매개 변수 유형과 동일한 이름 생성자의 속성, 우리는 명시 적으로 "이. 변수"방법을 사용해야하는 경우 특별한 경우,이 속성이 아니라 매개 변수보다 변수임을 보여줍니다
-
-
- 이 호출 생성자
- ① 클래스의 생성자는 명시 적 모드, 본에 지정된 다른 생성자 클래스를 호출 "는이 (매개 변수 목록)"을 사용할 수 있습니다
- 이 호출 생성자
-
-
- "는이 (매개 변수 목록)"메서드 호출 자체 생성자 ② 생성자가 될 수 없습니다
- 클래스가 N의 생성자를 선언하는 경우 ③ 생성자 사용하여 N-1의 최대가 "이 (파라미터리스트)." 사이클 호출을 표시 할 수 없습니다
- ④ "이 (매개 변수 목록)"클래스의 라인 생성자의 시작 부분에 선언해야합니다
- ⑤ 내부 생성자는 생성자 유일한 전화를 사용하는, "이 (파라미터리스트)의"을 선언 할
-
두, 슈퍼 키워드
1. 정의
-
- 슈퍼 이해로 : 부모 클래스
- 부모 클래스를 호출하는 슈퍼를 사용하여 작업을 지정
- 상위 클래스에 정의 된 슈퍼 속성에 액세스 할 수 있습니다
- 이 방법은 상위 클래스에 정의 된 슈퍼 멤버를 호출 할 수 있습니다
- 슈퍼는 부모 클래스의 생성자 서브 클래스 생성자를 호출하는 데 사용됩니다
- 슈퍼 추적이 직접 부모에 한정되지 않고,
2, 슈퍼 호출 구조
-
- super调用属性/方法
- ① 在子类的方法或构造器中,通过"super.属性"或者"super.方法"的方式,显式的调用父类中声明的属性或方法。但是很多情况下都可以省略"super."
- super调用属性/方法
-
-
- ② 当子类和父类中定义了同名的属性时,若想在子类中调用父类中声明的属性,则必须显式的使用"super.属性"的方式,表明调用的是父类中声明的属性。说明:子类的属性不会覆盖父类中同名属性。在堆空间中,两个属性都会存在
- ③ 当子类重写了父类中的方法以后,若想在子类的方法中调用父类中被重写的方法时,则必须显式的使用"super.方法"的方式,表明调用的是父类中被重写的方法
- super调用构造器
- ① 在子类的构造器的首行,显示的使用“super(形参列表)”的方式,调用父类指定的构造器
-
-
-
- ② 针对于子类的某一个构造器而言,只能最多声明一个“super(形参列表)”
- ③ 在子类的构造器中,针对于"this(形参列表)"或"super(形参列表)"只能二选一,不能同时出现
- ④ 在子类构造器的首行,没有显式的声明"this(形参列表)"或"super(形参列表)",则默认调用的是父类中空参的构造器:super()。此时父类中必须存在空参构造器,不然报错
-
-
-
- ⑤ 在子类的多个构造器中,至少一个构造器的首行使用了"super(形参列表)"。其他构造器均为this(形参列表)(n-1)
-
3、this和super的区别
三、static关键字
1、定义
-
- 静态的,在Java类中,可用static修饰属性、方法、代码块、内部类。没有构造器
- 被修饰后的成员具备以下特点:
- ①随着类的加载而加载
- ②优先于对象存在
- ③修饰的成员,被所有对象所共享
- ④访问权限允许时,可不创建对象,直接被类调用
2、static修饰属性
-
- 1)按是否使用static修饰
- 静态变量(或类变量):使用static修饰的变量。当创建类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是已经修改过了的
- 实例变量(非静态属性):不使用static修饰的属性。当创建类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改
- 2)按内存分配
- 实例变量:随着对象的创建而产生,分配在堆空间中
- 静态变量
- ① 静态变量随着类的加载而加载。可以通过"类.静态变量"的方式进行调用
- 1)按是否使用static修饰
-
-
-
- ② 静态变量的加载要早于对象的创建
- ③ 由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中
- ④ 静态属性举例:System.out; Math.PI
-
- 3)静态变量内存解析
-
3、static修饰方法:静态方法 VS 非静态方法
-
- ① 随着类的加载而加载,可以通过"类.静态方法"的方式进行调用
-
- ② 静态方法中:只能调用静态的属性或静态的方法。不可以调用非静态的属性和非静态的方法
-
- ③ 非静态方法中:既可以调用非静态的属性和非静态的方法。也可以调用静态的属性或静态的方法
-
- static注意点:在静态的方法内,不能使用this关键字、super关键字
4、static使用环境
-
- 如何判定属性是否需要声明为static的?
- ① 属性是可以被多个对象所共享的,不会随着对象的不同而不同的
- ② 类中的常量也常常声明为static
- 如何判定方法是否需要声明为static的?
- ① 操作静态属性的方法,通常设置为static的
- ② 工具类中的方法,习惯上声明为static的。 比如:Math、Arrays、Collections
- 如何判定属性是否需要声明为static的?
四、final关键字:
-
-
定义:表示“最终的”,可以用来修饰的结构:类、方法、变量
-
1、 final修饰类
-
- 此类不可以被继承。比如:String / StringBuffer类
2、final修饰方法
-
- 此方法不能被重写。比如:Object类的getClass()
3、final修饰变量
-
- final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。比如:Math类中的PI
- 1)final修饰属性
- final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,然后才能使用
- 可以考虑的赋值的位置:
- ①显式初始化
-
-
-
- ②代码块中初始化
-
-
-
-
-
- ③构造器中
-
-
-
-
-
- 方法中不行
-
-
-
- 2) final修饰局部变量
- final修饰方法体中的局部变量
- 2) final修饰局部变量
-
-
- final修饰形参时,当调用此方法时,给常量形参赋一个实参,一旦赋值以后,就只能在方法体内使用此形参,但不能进行重新赋值
-
-
- 3)static final 用来修饰属性:全局常量