Java子类继承父类时也继承父类的静态函数吗 5

现在的问题是,如果子类与父类有一个同名同参同返回值的静态函数,那么这时Java会认为是重写(override),可是,静态函数是不允许重写的,那么这岂不是矛盾了吗???代... 现在的问题是,如果子类与父类有一个同名同参同返回值的静态函数,那么这时Java会认为是重写(override),可是,静态函数是不允许重写的,那么这岂不是矛盾了吗???
代码实例:
public class A
{
public static void print()
{
System.out.println(">>>>>>>>>>>>A");
}
public void f()
{
System.out.println(">>>>>>>>>>>>f");
}
}
public class B extends A
{
//这个函数不算覆盖吗, 从形式上看是覆盖了父类的print()
//如果不算覆盖的话,那么子类与父类拥有相同的函数算什么?
//如果B继承A的静态函数print.自己又定义了一个相同的,不矛盾吗?
//如果算覆盖的话,而静态函数是不允许覆盖的,这不矛盾了吗?

public static void print()
{
System.out.println(">>>>>>>>>>>>B");
}
public void f() //这个是正宗的对父类函数的覆盖,与上面的函数只差一个static
{
System.out.println(">>>>>>>>>>>>ff");
}
}
展开
 我来答
瞬风Q无迹
2012-09-25 · TA获得超过130个赞
知道答主
回答量:62
采纳率:0%
帮助的人:63.7万
展开全部
其实楼主只要理解static修饰的成员在内存中的分配情况就能理解;
以楼主代码为例:
1.首先声明一点: Static修饰的变量/函数优行于该类对象存在; 随着类的加载而加载,而这时还不需要对象; 这也是静态代码可用类名. 出来的原来;

2.理解以上就可推断出很多;eg:
2.1 假设有B b=new B();
则这时因为继承的关系,会一直调用到A的构造方法。这样就会把A,B中两个print()都加入进方法区, 但A的print()方法在A对应的区域,B的print方法在B中对应的区域;
此时我们用b,print()调用的是B中的print();

2.2 假设有A a=new B();
此时因为编译器在编译时认为a的类型是A,所以调用的是A中的print();
//这也是父类对象不能调用子类对象的特有方法的原因.。

而在运行时, jvm会发现a的真实类型是B,所以a可向下转型为B类型;这时就可以调用子类特有方法
//这也是为什么可以向下转型,

但对没握告于静态成员,不管在编译时还是运行时,父类对象都不能调用子类特有的静态方法;
而子类可以继承父类非private的static成员,子类也有自己特有静态枯明方法,但这个名字和父类一样.也就是说其实子类同时有两个静态方法;但这两个方法不在同一区域内,所以不存在同名的冲突。只是子皮塌类的静态方法屏蔽了父类的静态方法;你可以把静态方法看成子类对象特有的方法。
其实B对象中也可访问A类中的print(),修改代码即可;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sheyuefeng1984
2012-09-10
知道答主
回答量:12
采纳率:0%
帮助的人:4.3万
展开全部
是的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sxf20110809
2012-09-10
知道答主
回答量:25
采纳率:100%
帮助的人:8.9万
展开全部
除了private方法和对象不继承,其他的都能给子类继承
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woandsl
2012-09-10 · TA获得超过161个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:202万
展开全部
那个不叫覆盖,叫做隐藏,屏蔽.一个新的方法把父类的方法隐藏掉了。但新方法是属于子类的,败灶
跟父类中同名方法没关系。比如你这个类如果Dog dog= new
LittleDog();,那么调用dog.bark()的话调庆枯指用的会是Dog.bark()而非LittleDog.bark(),因为不是动态绑誉配定的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4352371
2012-09-22
知道答主
回答量:29
采纳率:0%
帮助的人:3.7万
展开全部
当然喽
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式