类中的关键字
类中的关键字
super 与 this 作区分作用
super 表明 是 父类的 构造器 或者 方法 或者 属性
this 表明 是 本身类的 构造器 或者 方法 或者 属性
public class Pet {
protected String name = "pet";
public Pet() {
System.out.println("--pet--");
}
public void print() {
System.out.println("=pet=");
}
}
public class Dog extends Pet {
private String name = "dog";
public Dog() {
System.out.println("--dog--");
}
public void print() {
System.out.println("=dog=");
}
public void test(String name) {
System.out.println(name);
System.out.println(this.name);
System.out.println(super.name);
}
public void testPrint() {
print();
this.print();
super.print();
}
}
Dog dog = new Dog();
// --pet--
// --dog--
dog.test("旺财");
// 旺财
// dog
// pet
dog.testPrint();
// =dog=
// =dog=
// =pet=
super()
-
super调用父类的构造方法,必须在构造方法的第一个
-
super必须只能出现在子类的方法或者构造方法中!
-
super和this不能同时调用构造方法!
super VS this
调用实例方法:
- this.方法 或者 this.属性:调用本身的实例方法或者属性
- super.方法 或者 super.属性:调用父类的实例方法或者属性
前提
- this:没有继承也可以使用;
- super:只能在有继承其他类时才可以使用;
构造方法
- this():本类的构造;调用本类的构造方法也必须在第一行
- super():父类的构造。子类调用父类构造方法必须在第一行
instanceof:判断一个对象是什么类型。
类型判断:在声明类型的子类父类这个范围之内 判断 对象的实际类型与父类型
类型转换:实际类型与父类型之间的转换
Object obj = new Dog();
System.out.println(obj instanceof Object);
System.out.println(obj instanceof Pet);
System.out.println(obj instanceof Dog);
System.out.println(obj instanceof Cat);
System.out.println(obj instanceof String);
// true
// true
// true
// false
// false
Pet pet = new Dog();
// 编译报错 不能类型转换
System.out.println(pet instanceof String);
Dog dog = new Dog();
// 编译报错 不能类型转换
System.out.println(dog instanceof Cat);
static关键字
静态方法、静态属性、静态代码块与类一起加载
静态方法的调用
类.方法 只能调用 静态方法 不能调用 实例方法。
静态方法 只能直接调用 静态方法。
静态代码块
package com.gcbeen.oop;
public class Pet {
static {
System.out.println("静态代码块");
}
{
System.out.println("匿名代码块");
}
public Pet() {
System.out.println("构造方法");
}
}
new Cat();
System.out.println("=====================");
new Cat();
// 静态代码块
// 匿名代码块
// 构造方法
// =====================
// 匿名代码块
// 构造方法
使用 static 静态导入包
package com.gcbeen.oop;
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Application {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}
// 0.10676940949080993
// 3.141592653589793
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术