黑马程序员技术交流社区
标题:
关于继承的一点小疑惑!
[打印本页]
作者:
精彩生活向钱看
时间:
2013-6-2 23:09
标题:
关于继承的一点小疑惑!
class Text
{
public static void main (String [] args)
{
Newphone p=new Newphone();
p.newshow();
}
}
class Phone
{ static void call()
{}
static void show()
{
System.out.println("number");
}
}
class Newphone extends Phone
{
static void newshow(){
System.out.println("name");
System.out.println("pic");
}
}
复制代码
请问大家在我的代码中我调用的事p.newshow这个函数,这个函数所在的类是Phone这个类的子类啊,那么在我执行newshow这个函数的时候,打印的结果应该是number,name,pic啊,为什么正确的打印结果没有number呢,请大家帮忙答疑,谢谢各位了!!
作者:
山鹰
时间:
2013-6-2 23:50
本帖最后由 山鹰 于 2013-6-2 23:52 编辑
在newShow()中没有调用show()方法怎么会执行呢? 如果你在父类的无参构造函数中输出"name"那么在创建子类对象的时候会默认的调用
public class Phone {
static void call(){
}
static void show(){
System.out.println("number");
}
}
public class NewPhone extends Phone{
static void newShow(){
Phone.show(); //<font color="red">这样可以调用show()中的输出语句</font>
System.out.println("name");
System.out.println("pic");
}
}
public class Text {
public static void main(String[] args) {
NewPhone p = new NewPhone();
p.newshow();
}
}
复制代码
作者:
小冰块
时间:
2013-6-3 00:08
因为子类虽然可以继承静态方法,但是不能覆盖,因为静态方法是在编译时就确定的,而不是执行子类对象时才确定。
作者:
小冰块
时间:
2013-6-3 00:11
啊,我好像看错问题了,你想要在子类中的方法中使用父类的方法就得调用啊,在newshow里加上“super.show();”就可以了。
作者:
孔雀东南飞
时间:
2013-6-3 06:48
楼主:
1、在这里你没有调用show()方法,当然不会打印。
2、要想调用该方法,你可以p.show() 或 Phone.show()。
3、另一种方式就是
class Phone
{
Phone()
{
System.out.println("number");
}
}
作者:
郑锐
时间:
2013-6-3 09:49
你调用的是子类里面的newshow,和父类里面的show没有关系。如果你想输出number。需要在newshow里面调用一下父类的show方法。
作者:
狂飙的yellow.co
时间:
2013-6-3 22:20
哥们,子类的方法可以覆盖父类的方法————————————————————————
但是子类的不能覆盖父类的 静态方法 就是 由static修饰的方法
static 顾名思义,就是静态的,他是方法的,他属于这个类,由于是类的方法,他可以直接引用类名来引用方法,也可以通过类的对象来引用这个方法,他既不能被子类覆盖,也不能被子类继承。简单的说,他是在编译的时候就和类帮定在一起了,不能被运行时动态加载。
那么就不能被覆盖,结果就是 number 了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2