instanceof

instanceof

 Object s1=new Chinese();
       System.out.println(s1 instanceof People);
       System.out.println(s1 instanceof Chinese);
       System.out.println(s1 instanceof Object);
       System.out.println(s1 instanceof Americas);
       System.out.println(s1 instanceof String);
        System.out.println("========================================");
       People s2=new Chinese();
        System.out.println(s2 instanceof People);
        System.out.println(s2 instanceof Chinese);
        System.out.println(s2 instanceof Americas);
        System.out.println(s2 instanceof Object);
        System.out.println("========================================");
       // System.out.println(s2 instanceof String);   报错:People类与String类无关
        Chinese s3=new Chinese();
        System.out.println(s3 instanceof People);
        System.out.println(s3 instanceof Chinese);
        System.out.println(s3 instanceof Object);
        // System.out.println(s3 instanceof Americas);
        // System.out.println(s3 instanceof String);  报错原因同上
        System.out.println("========================================");
​
        People s4=new People();
        System.out.println(s4 instanceof People);
        System.out.println(s4 instanceof Chinese);//   X instanceof Y:当X为Y的父类或者本身是为true,否则为false
        System.out.println(s4 instanceof Object);
        System.out.println(s4 instanceof Americas);//
        // System.out.println(s4 instanceof String);
   */
​

主类

package Husky.JAVA.opp.Demo03;
​
public class A {
    public static void main(String[] args) {
        //父(高)                     子(低)
        People s=new  Americas();
        //s.eat(); People没有eat方法
        //高------------------------->低     不需要强转
        //将People转化为Americas,就可以使用Americas里的eat方法
        Americas S=(Americas)s;
        S.eat();
        ((Americas) s).eat();//写成一句话
    }
}
/*
1.父类引用指向子类的对象
2.把子类转换成父类,向上转型
3.把父类转换成子类,想下转型
4.方便方法的调用,减少重复的代码
 */
​
package Husky.JAVA.opp.Demo03;
​
public class People {
    public void run(){
        System.out.println("People run");
    }
}
​
​
​
​
​
package Husky.JAVA.opp.Demo03;
​
public class Chinese extends People {
    public void run(){
        System.out.println("Chinese run");
    }
    public  void Study(){
        System.out.println("Chinese Study");
    }
​
}
  /*
  一个对象的实际类型是确定的
  可以指向的引用类型不确定,父类的引用指向子类
    Chinese s1 = new Chinese();
    People  s2 = new Chinese();//子类重写的父类的方法,调用子类的方法
    s1.run();
    s2.run();
    ((Chinese) s2).Study();//强转
    s2.Study();  父类指向子类,但不能调用子类独有的方法
​
​
​
​
​
package Husky.JAVA.opp.Demo03;
​
public class Americas extends People{
    public void eat(){
        System.out.println("Americas eat");
    }
}
​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值