标签:
父类(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; } }
标签:
原文地址:http://www.cnblogs.com/quyanhui/p/4377986.html