instanceof、类型转换和static

instanceof

package com.oop;

import com.oop.demo07.Person;
import com.oop.demo07.Student;
import com.oop.demo07.Teacher;

public class Application {
    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);//true
        System.out.println(object instanceof Person);//true
        System.out.println(object instanceof Object);//true
        System.out.println(object instanceof Teacher);//False
        System.out.println(object instanceof String);//False
        System.out.println("=================================");
        Person person = new Student();
        System.out.println(person instanceof Student);//true
        System.out.println(person instanceof Person);//true
        System.out.println(person instanceof Object);//true
        System.out.println(person instanceof Teacher);//False
        //System.out.println(person instanceof String);//编译报错
        System.out.println("=================================");
        Student student = new Student();
        System.out.println(student instanceof Student);//true
        System.out.println(student instanceof Person);//true
        System.out.println(student instanceof Object);//true
        //System.out.println(student instanceof Teacher);//编译报错
        //System.out.println(person instanceof String);//编译报错

    }
}

类型转换

package com.oop;

import com.oop.demo07.Person;
import com.oop.demo07.Student;
import com.oop.demo07.Teacher;

public class Application {
    public static void main(String[] args) {
        //类型之间的转化: 父    子
        //高                 低
        Person obj = new Student();

        //student将这个对象转换为Student类型,我们就可以使用Student类型的方法了
        Student student = (Student) obj;
        student.go();
        //或者直接写((Student)obj).go();

        //子类转换为父类,可能丢失自己的本来的一些方法!

    }
}
/*
1.父类引用指向子类的对象
2.子类转换为父类,向上转型;不用强制转换
3.把父类转换为子类,向下转型:强制转换
4.方便方法的调用,减少重复的代码!简洁
 */

static

package com.oop.demo08;

//static
public class Student {
    private  static  int age;//静态变量
    private  double score;//非静态变量

    public void run(){//非静态方法:可以调用静态方法的东西和自己的

    }
    public static void go(){//静态方法:不能调用非静态方法,只能调用自己的

    }
//    public static void main(String[] args) {
//        new Student().run();
//    }
    public static void main(String[] args) {
        Student.go();
    }

 /*   public static void main(String[] args) {
        Student s1 = new Student();
        System.out.println(Student.age);
        System.out.println(s1.age);
        System.out.println(s1.score);
    }
  */
}
package com.oop.demo08;

public class Person {
    //2: 赋初始值
    {
        //代码块(匿名代码块)
        System.out.println("匿名代码块");
    }
    //1:只执行一次
    static {
        //静态代码块
        System.out.println("静态代码块");
    }
    //3
    public Person() {
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person1 = new Person();
        System.out.println("====================");
        Person person2 = new Person();
    }
}
package com.oop.demo08;
//静态导入包
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);
    }
}
posted @ 2025-07-18 14:10  A那就算了吧  阅读(10)  评论(0)    收藏  举报