黑马程序员技术交流社区

标题: 继承的一些问题 [打印本页]

作者: lizequn007wo    时间: 2015-7-27 22:06
标题: 继承的一些问题
public class Sub extends Super {//子类
public int i = 100;
public void show()
{
System.out.println("子类方法");
}


public static void main(String[] args) {
Super sup = new Super();
Sub sup1 = new Sub();
Super sup2 = new Sub();

}


}


class Super {//父类
public int i = 50;


public void show()
{
System.out.println("父类方法");
}


}
请问sub、sub1、sub2三个对象的可以访问那些方法和属性

作者: 真实姓名被注册    时间: 2015-7-27 23:38
sup,父类对象,能访问父类中的public成员i,能调用父类中的public方法show()
sub1,子类对象,能访问父类中的public成员i,当调用sub1.show()时执行的是子类中的public方法show(),父类中的public方法show()不可见
sub2,父类对象,能访问父类中的public成员i,当调用sub2.show()时执行的是子类中的public方法show(),实现了多态,父类中的public方法show()不可见

作者: umbriel    时间: 2015-7-27 23:51
su为父类对象,访问父类的方法和变量,sub1是子类对象访问子类继承自父类的方法和变量,若子类重写了父类的方法则调用的是子类的方法。sup2是指向子类对象的引用,可访问子类的方法,但子类的方法必须父类也具有。
作者: 陈鹏No1    时间: 2015-7-28 12:19
sub只能访问Super类中的成员。
sub1对象调用的是子类中的成员,因为复写了父类中的方法。
sub2是多态,因为子类复习了父类中的方法,所以调用的是子类的方法。
作者: 曾云鹏    时间: 2015-7-28 13:48
楼上回答的不错
作者: lizf2010    时间: 2015-7-28 14:31
sub2是多态,对于方法来说,编译看左边,运行看右边
作者: 落叶随尘    时间: 2015-7-28 19:30
好想有的明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2