【狂神说Java】阶段一笔记21. java面向对象04

instanceof

public class Application {
    public static void main(String[] args) {

        //Object -> String
        //Object -> Person -> Student
        //Object -> Person -> Teacher
        //System.out.println(x instanceof y); x跟y是否有父子关系
        Object object = new Student();

        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(student instanceof String); //编译报错
        System.out.println("======================");

        Object object1 = new Person();
        System.out.println(object1 instanceof Student); //false
        System.out.println(object1 instanceof Person); //true
        System.out.println(object1 instanceof Object); //true
        System.out.println(object1 instanceof Teacher); //false
        System.out.println(object1 instanceof String); //false
        System.out.println("======================");

        Person person1 = new Person();
        System.out.println(person1 instanceof Student); //false
        System.out.println(person1 instanceof Person); //true
        System.out.println(person1 instanceof Object); //true
        System.out.println(person1 instanceof Teacher); //false
        //System.out.println(person1 instanceof String); //编译报错
        System.out.println("======================");
    }
}

强制转换

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

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

        Student student = (Student)obj;
        student.go();

        Student student1 = new Student();
        Person person = student1;
        //person.go(); //报错
    }
}
/*
    1.父类的引用指向子类的对象
    2.把子类转换为父类,向上转型:直接转,丢失子类中原本可直接调用的特有方法
    3.把父类转化为子类,向下转型:强制转换
    4.方便方法的调用,减少重复的代码
 */

static

public class Student /*extends Person*/{
    private static int age; //静态变量 多线程!
    private double score; //非静态变量

    public void run(){
        //非静态方法里可以调用静态方法
        go();
    }

    public static void go(){
        //静态方法里不可以调用非静态方法
        //因为加载时static与main最先加载,此时没有非静态方法
        //run(); 报错
    }

    public static void main(String[] args) {
        Student s1 = new Student();

        System.out.println(Student.age);
        //System.out.println(Student.score); 报错
        System.out.println(s1.age);
        System.out.println(s1.score);

        s1.run();
        s1.go();
        go();
    }
}

代码块

//final: 常量修饰符,通过fingal修饰的类不能被继承
public final class Person {

    {
        //2.匿名代码块:不能主动调用,创建对象时自动创建,在构造器之前,可用来赋初值
        System.out.println("匿名代码块");
    }

    static {
        //1.静态代码块:类一加载直接执行,只执行一次
        System.out.println("静态代码块");
    }

    public Person(){
        //3.构造方法
        System.out.println("构造方法");
    }

    public static void main(String[] args) {
        Person person1 = new Person();  //顺序输出 1 2 3
        System.out.println("=======");
        Person person2 = new Person();  //顺序输出 2 3
    }
}

静态导入包

import static java.lang.Math.PI;
import static java.lang.Math.random;

public class Test {
    public static void main(String[] args) {
        System.out.println(random());
        System.out.println(PI);
    }
}

PS:学习自狂神说java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值