开奖网源码搭建与java 多态

1.多态释义
多态是指同一操作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的结果,也就是,相同的语句在不同的运行环境中可以产生不同的运行结果。开奖网源码搭建QQ:2152876294 网址diguaym.com

多态的本质特征就是父类(或接口)变量可以引用子类(或实现接口的类)对象,也就是子类对象可以被当做基类对象使用。

Parent p=new Child1();
Parent p=new Child2();
1
2
总是可以让更一般的对象容纳更具体的对象

子类与基类间的赋值:

子类对象可以直接赋给基类变量,但是基类对象要想赋给子类变量必须执行类型转换,语法为:

子类变量=(子类名)基类对象名;
1
这种转换失败会抛出ClassCastException异常。通过instanceof判断对象是否可转换为指定类型。

下面代码便于理解类型转换:

public class TestMain {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Parent parent=new Parent();
    parent.printVal();//100
    Child child=new Child();
    child.printVal();//200

    parent=child;
    parent.printVal();//200,调用子类方法

    parent.val++;//父类字段
    System.out.println(parent.val);//101
    parent.printVal();//200,子类方法

    ((Child)parent).val++;//子类字段
    parent.printVal();//201//子类方法

}

}

class Parent{
public int val=100;
public void printVal(){
System.out.println("Parent.printVal,val="+val);
}
}
class Child extends Parent{
public int val=200;
public void printVal(){
System.out.println("Childs.printVal,val="+val);
}
}

总结一下输出这样结果的原因:

1.子类与父类有同名方法时:

一个父类变量引用一个子类对象时,具体调用哪个方法由对象”真实”类型决定,就是说,对象是子类型就调用子类型方法,是父类型就调用父类型方法。

2.子类父类具有同类型同名字段时:

子类字段会隐藏父类字段,子类方法访问的是子类字段(而不是父类字段)。如果子类确实想访问父类字段,可以用super关键字访问。

但如果子类被当做父类使用,即父类变量名子类对象,则访问的字段是父类的。

猜你喜欢

转载自blog.51cto.com/13914096/2156192
今日推荐