JAVA--父子类之间的类型转换

package test;
/*
 * 1、子类转化成父类
 * 子类可以自动转型成父类
 * (1)如果子类对父类的方法有覆写,并且子类的实例赋值给父类的引用,通过这个引用来
 *         调用这个覆写的方法的时候,调用的是子类的
 * (2)父类的引用不能调用子类的特有方法和属性
 * (3)如果父子类有同名的属性,那么父类指向子类的实例的引用调用这个属性的时候调用的还是父类的
 * 2、父类转化成子类
 * 父类转换成子类不能自动完成。
 * 抽象类作为父类同样符合
 * 接口中符合,但注意接口中没有属性
 */
class Teacher{
    String name = "战哥";
    int age;
    public void teach() {
        System.out.println(name+"在教课");
    }
}

class JavaTeacher extends Teacher{
    boolean isGlass;
    String name = "大战哥";
    public void teach() {
        System.out.println(name+"在教java课");
    }
    public void playBall() {
        System.out.println(name+"在打篮球");
    }
}

class PHPTeacher extends Teacher{
    public void teach() {
        System.out.println(name+"在教PHP");
    }
}

public class Demo1{
    public static void main(String[] args) {
        //子类自动转换成父类
        Teacher jt = new JavaTeacher();
        //jt.name = "战哥";
        //如果子类对父类的方法有覆写,并且子类的实例赋值给父类的引用,通过这个引用来
        //调用这个歌覆写的方法的时候,调用的是子类的
        jt.teach();
        //父类的引用不能调用子类的特有方法和属性
        //jt.playBall();调用失败
        //jt.isGlass = true;调用失败
        System.out.println(jt.name);
        
        Teacher t = new JavaTeacher();
        //Teacher t = new Teacher();//不能转换成子类,如果想转换成子类必须new 子类()
        JavaTeacher jt1 = (JavaTeacher)t; //把真身是javaTeacher的父类转回JavaTeacher子类,可以访问子类内部发方法和属性
        
        Teacher t1 = new PHPTeacher();
        //不能转换,如果这个父类的真身是子类B,不能转换成子类A
        JavaTeacher jt2 = (JavaTeacher)t;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值