黑马程序员技术交流社区
标题:
练习中遇到super问题
[打印本页]
作者:
钟伟杰
时间:
2013-4-23 01:19
标题:
练习中遇到super问题
本帖最后由 钟伟杰 于 2013-4-23 12:55 编辑
class B
{
}
public class A extends B
{
public static void main(String[] args)
{
new A().test();
}
public void test()
{
System.out.println(super.getClass().getName());
}
}
运行结果是:A
A继承B,test方法中的super不是调用父类B的吗?为什么调用A类的呢?
作者:
续圆凯
时间:
2013-4-23 01:51
这段程序中,虽然A继承了B但是 Test方法是A类的方法,所以 结果会打印A的类名。
作者:
Friendy89
时间:
2013-4-23 07:11
何为继承,当子类继承了父类的方法后,它便拥有了父类的属性,子类创建对象时会先调用父类的构造方法。 如果父类没有无参构造方法。 子类需重写父类构造方法
所以楼主弄清楚继承的概念即可
作者:
陈湘林
时间:
2013-4-23 08:52
super关键字
super:超级
如果,子类想要在构造方法,可以用super关键字
父类
package t1;
public class Person {
String name;
public Person(){
System.out.println("Person构造了");
}
public void showme(){
System.out.println("你好");
}
}
子类
package t1;
public class Student extends Person{
//子类也有独立的构造方法
public Student(){
super();//调用父类的构造方法
super.showme();//super就相当于Person这个类
}
}
测试
package t1;
public class Test {
public static void main(String[] args) {
Student s=new Student();
}
}
结果
Person构造了
你好
复制代码
作者:
肖川
时间:
2013-4-23 08:53
super的用法:
super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时)
你的用法两类都不是,怎么会打印出父类的类名呢,根本没有用到父类的成员属性或者函数。
作者:
蒋名勇
时间:
2013-4-23 12:31
在继承关系中,如果A继承B,那么B中有而A中没有的public修饰的和protected修饰以及默认修饰的属性和方法都会被继承过来,但是如果B中有,A中也有的那么就是重写,就是多态,如果用的是子类对象,那么就会调用子类的方法,如果是A中特有的方法和属性,那么只有当引用和指向都是子类的时候才能调用的到
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2