面向对象——instanceof和类型转换

面向对象——instanceof和类型转换

instanceof的作用是判断两个实例之间有没有父子关系。

类型转换特点:

  • 父类引用指向子类的对象;
  • 把子类转换为父类,向上转型;
  • 把父类转换为子类,向下转型;强制转换
  • 方便方法的调用,减少重复的代码!

核心思想——抽象:封装、继承、多态!

package(包)com.du.OOP.demo02:类Application(mian()方法)

package com.du.OOP.demo02;

import com.du.OOP.demo06.Person;
import com.du.OOP.demo06.Student;
import com.du.OOP.demo06.Teacher;

//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[] args) {

        //instanceof使用
        //Object > String
        //Object > Teacher
        //Object > Person > Student
        Object object = new Student();

        //System.out.println(A instanceof B);能不能编译通过,取决于A和B有没有父子关系!

        System.out.println(object instanceof Student);//ture
        System.out.println(object instanceof Person);//ture
        System.out.println(object instanceof Object);//ture
        System.out.println(object instanceof Teacher);//false
        System.out.println(object instanceof String);//false

        Person person = new Student();
        System.out.println(person instanceof Student);//ture
        System.out.println(person instanceof Person);//ture
        System.out.println(person instanceof Object);//ture
        System.out.println(person instanceof Teacher);//false
        //System.out.println(person instanceof String);//编译报错

        Student student = new Student();
        System.out.println(student instanceof Student);//ture
        System.out.println(student instanceof Person);//ture
        System.out.println(student instanceof Object);//ture
        //System.out.println(student instanceof Teacher);//编译报错
        //System.out.println(person instanceof String);//编译报错

        //类型之间的转化:
        //父类转子类
        Person s1 = new Student();
        //将s1对象转换成Student类型,就可以使用Student类型的方法了
        Student s2 = (Student) s1;
        s2.go();
        //或者直接写成
        ((Student) s1).go();

        //子类转父类(可能会丢失方法)
        Student ss1 = new Student();
        ss1.go();
        Person pp1 = ss1;
        //pp1.go();//报错,无法使用go()方法

    }
}

package(包)com.du.OOP.demo06:类Person(instanceof和类型转换)

package com.du.OOP.demo06;

public class Person {

    public void run(){
        System.out.println("run!");
    }
}

package(包)com.du.OOP.demo06:类Student(instanceof和类型转换)

package com.du.OOP.demo06;

public class Student extends Person{
    public void go(){
        System.out.println("go!");
    }
}

package(包)com.du.OOP.demo06:类Teacher(instanceof和类型转换)

package com.du.OOP.demo06;

public class Teacher extends Person{
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

studyingdda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值