码迷,mamicode.com
首页 > 编程语言 > 详细

Java--重载与重写

时间:2015-03-30 14:36:02      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:

父类(Parent):
public class Parent {

    public String name = "parent 父类属性";
    public void say(){
        System.out.println("parent say被调用"+this.getClass());
    }
}
子类(Child):
public class Child extends Parent {

    /**
     * 属性只能被隐藏,不能被覆盖
     */
    public String name = "child 子类属性";
    
    public static void main(String[] args) {
        Child c = new Child();//普通对象
        c.say();
        
        Parent p = new Child();//向上转型
        p.say();
    
        /**
         * 当子类Child和父类Parent都有name属性时:
         * c.name = child 子类属性
         * p.name = parent 父类属性
         * 当子类Child没有name属性,父类有该属性时:
         * c.name = parent 父类属性
         * p.name = parent 父类属性
         */
        System.out.println("c.name = " + c.name);//c.name = child
        System.out.println("p.name = " + p.name);//p.name = parent
        
    }
    
    /**
     * 重写父类方法
     */
    public void say(){//子类方法一
        System.out.println("child say被调用"+this.getClass());
    }
    
    /**
     * 重载--子类方法一
     * 当子类方法一不存在时, 子类方法二看起来就象是程序员有意覆盖 say() 的功能,
     * 但对方法的类型定义却稍微有些不确切。
     * 然而,编译器此时假定的是程序员有意进行“过载” ,而非“覆盖”。
     */
    public void say(int s){//子类方法二
        System.out.println("child say被调用"+this.getClass());
    }
    
    /***
     * 方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成,
     * 当定义两种或多种具有相同名称的方法时,就称作重载。
     * 即重载时相同名称成员的参数列表是不相同的(参数顺序和类型)。
     * 以下say2三个方法是重载的体现
     */
    public void say2(){//子类方法三
        System.out.println("child say2被调用");
    }
    
    public void say2(int a){//子类方法四
        System.out.println("child say2被调用");
    }
    
    public int say2(String a){//子类方法五
        System.out.println("child say2被调用");
        return 0;
    }
}

 

Java--重载与重写

标签:

原文地址:http://www.cnblogs.com/quyanhui/p/4377986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!