instanceof
-
instanceof是Java中的二元运算符,左边是对象,右边是类;当对象是右边类或子类所创建对象时,返回true;否则,返回false。
-
类的实例包含本身的实例,以及所有直接或间接子类的实例
-
instanceof左边显式声明的类型与右边操作元必须是同种类或存在继承关系,也就是说需要位于同一个继承树,否则会编译错误
public class App { public static void main(String[] args) { //Object>String //Object>Person>Teacher //Object>Person>Student Object object = new Student(); //System.out.println(X instanceof Y); System.out.println(object instanceof Student); System.out.println(object instanceof Person); System.out.println(object instanceof Object); System.out.println(object instanceof Teacher); System.out.println(object instanceof String); System.out.println("--------------------------"); Person person = new Student(); System.out.println(person instanceof Student); System.out.println(person instanceof Person); System.out.println(person instanceof Object); System.out.println(person instanceof Teacher); //System.out.println(person instanceof String);编译报错! System.out.println("----------------------------"); Student student = new Student(); System.out.println(student instanceof Student); System.out.println(student instanceof Person); System.out.println(student instanceof Object); //System.out.println(student instanceof Teacher);编译报错 //System.out.println(student instanceof String);编译报错 } }
强制转换
调用函数:
public class App { public static void main(String[] args) { Person mao=new Student(); //studet将这个对象转换为Student类型,我们就可以使用Stdent类型的方法了! ((Student)mao).go(); //子类转换父类,可能丢失自己本来的一些方法 Student student = new Student(); student.go(); Person person=student; /* 1.父类引用指向子类的对象 2.把子类转换为父类,向上转型 3.把父类转换为子类,向下转型:强制转换 4.方便方法的调用,减少重复的代码 */ } }
子类:
public class Student extends Person{ public void go(){ System.out.println("go"); } }
父类:
public class Person { public void run(){ System.out.println("跑"); } }
static关键字详解
package opp.oop7; //static public class Student { private static int age;//静态的变量,可以用类直接调用 private double score;//非静态的变量 public static void main(String[] args) { Student s1 = new Student(); System.out.println(Student.age); System.out.println(s1.score); System.out.println(s1.age); } }
package opp.oop7; public class Person { { //匿名代码块 System.out.println("匿名代码块"); } static { //静态代码块:只执行一次! System.out.println("静态代码块"); } public Person() { System.out.println("构造方法"); } public static void main(String[] args) { Person person = new Person(); System.out.println("----------"); Person person1 = new Person(); } }
package opp.oop7; //静态导入包 import static java.lang.Math.random; import static java.lang.Math.PI; public class Test { public static void main(String[] args) { System.out.println(random()); System.out.println(PI); } }