首页 > 编程语言 > 详细

java编程思想-多态

时间:2015-10-20 19:26:51      阅读:277      评论:0      收藏:0      [点我收藏+]

java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是动态绑定即运行时绑定。

public class test
{
    private void f()
    {
        System.out.println("private f()");
    }
    public static void main(String[] args)
    {
        test t = new Derived();
        t.f();
    }
}

class Derived extends test
{
    public void f()
    {
        System.out.println("public f()");
    }
}
/*
private f()
private 方法被自动认为是final方法,没有多态,静态绑定,直接调用基类的方法
*/

 

只有普通的方法调用可以是多态的,如果你直接访问某个域,这个访问将在编译期进行解析,没有多态

class Super
{
    public int field = 0;
    public int getField(){return field;}
}
class Sub extends Super
{
    public int field =1;
    public int getField(){return field;}
    public int getSuperField(){return super.field;}
}
public class test
{
    public static void main(String[] args)
    {
        Super sup = new Sub();
        System.out.println(sup.field+"  "+sup.getField());
        Sub sub = new Sub();
        System.out.println(sub.field+"  "+sub.getField()+"  "+sub.getSuperField());
    }
}
/*
0  1
1  1  0
*/

如果某个方法是静态的,它的行为不具有多态性。

class Super
{
    public static void getField(){System.out.println("Super");}
}
class Sub extends Super
{
    public static void getField(){System.out.println("sub");}
}
public class test
{
    public static void main(String[] args)
    {
        Super sup = new Sub();
        sup.getField();
    }
}
/*
Super
*/

 

java编程思想-多态

原文:http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/4895684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!