Java开发体系学习之基础(十 四)向下转型 多态中成员变量的转型 成员变量和方法 instanceof

/*
*将父类型强制转换为子类型
*/
class person{
public void eat(){
   System.out.println("人吃饭");
}
}

class student extends person{
public void study(){
 System.out.println("学生学习");
}
}

public class demo(){

   public static void main(String[] args){

       person p=new student();//父类引用指向子类对象

      p.eat();//可以调用,学生都是人,可以吃饭

    // p.study();//不可以,此时把学生看作人,不是所有人都学习,当把学生看作人,不能调用人的方法。

    student s=(student)p;//强转,向下转型

//现在相当于回归本色

}

}

2.多态中成员变量转型:

/*
*多态中成员变量的访问特点
*编译时期:编译器会检查多态形式等号左面
*的类型是否有调用成员变量,如果有,编译通过,没有失败
*运行时期:
*运行时期检查等号左面的成员变量获取其值
*便宜看左边,运行还看左边
*/
class Fu(){
 int number=4;
}
class zi extends fu{
int number=10;
}
public class demo{
public static void main(String[] args){
   //定义的对象的类取决于前面的
   Fu fu=new zi();//父类引用指向子对象}}

3.多态中成员方法访问特点:

      和成员变量类似,分为编译时期和运行时期,编译时期要看等号左边的类型中是否定义了条用的成员方法,如果有编译通过,没有,编译失败,运行时期要看等号右边的类型中是否调用了定义的成员方法,如果有直接执行。

4.多态中的instanceof运算符:

/*
*instanceof运算符
*运算结果为boolean类型
interface JD{}
class Animal{}
class Dog extends Animal implements JD{}
public class instanceof{
    public static void main(String[] args){
    Dog d=new Dog();
   //判断d能否是Dog类型
   //实际意义:new Dog()能否成为狗,ok,返回true
    boolean b1=d instanceof Dog;
    Aniumal a=new Dog();
   //判断a引用
    boolean b2=a instanceof Dog;
    Jd jd=new Dog();
    boolean b3= jd instanceof Dog;
}
}



猜你喜欢

转载自blog.csdn.net/qq_37904981/article/details/80609353