学习内容
- 多态中的instanceof运算符
public class Client1 {
public static void main(String[] args) {
Animal tom = new Dog();
Animal mimi = new Cat();
Animal ani1 = new Animal();
if (ani1 instanceof Dog) { // 此处ani1的数据类型为 Animal 所以运算的结果为 false
Dog dog1 = (Dog) ani1;
System.out.println(dog1.getAge());
}
if (tom instanceof Dog) { // 此处tom运行时数据类型为 Dog 所以运算的结果为 true,可以进行转换
Dog dog2 = (Dog) tom; // 强制类型转换
dog2.setAge(20);
System.out.println(dog2.getAge());
}
tom.cry();
mimi.cry();
}
}
- 包装类
- final修饰符
public class Client1 {
public static final String SCHOOL_NAME = "南通青鸟IT教育";
public static void main(String[] args) {
int r = 20;
System.out.println(Math.PI * 2 * r);
// Client1.SCHOOL_NAME = "青鸟IT教育"; // 错误代码,不能被修改
}
}
方法的重载和重写
- 抽象类
package c1103;
public abstract class Person {
private String name;
private String age;
private Boolean sex;
// private abstract void fun1(); // 错误的
// public abstract static void fun2(); // 错误的
public final void eat() {
}
// 此方法为抽象方法
public abstract void talk();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Boolean getSex() {
return sex;
}
public void setSex(Boolean sex) {
this.sex = sex;
}
public static void main(String[] args) {
// Person p = new Person(); // 错误的
}
}
学习总结
今日学习了重点多态,明白了Java引用类型变量有两种类型:一种是编译时的类型,一种是运行时的类型。
- 编译的类型是由声明变量的时候决定的。
- 运行时类型由实际赋给该变量的对象决定。