A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 生牛排 中级黑马   /  2016-7-25 18:41  /  1689 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我在子类写了一个静态方法,里面调用了父类的一个静态方法,为什么会报错?

25 个回复

正序浏览
itismyhao 发表于 2016-7-28 23:57
找不到你的帖子了,在这回复你吧
今天问了两个老师.给的不同的答案
一个老师静态不牵扯继承不继承,但具体 ...

我得到的答案是父类的静态方法不能被子类继承,字符类中就算有一模一样的静态方法,那也是各自的。
回复 使用道具 举报
java627 发表于 2016-7-26 21:14
父类的静态方法不能被子类继承,就算你在子类中写一个和父类一模一样的静态方法,那也只能算是子类的,不是 ...

找不到你的帖子了,在这回复你吧
今天问了两个老师.给的不同的答案
一个老师静态不牵扯继承不继承,但具体给我解释清楚,我也不好意思深究.
另一个老师说的跟我想的差不多,如果子类没有与父类一模一样的静态方法,子类是可以继承父类的静态方法的.如果有一模一样的话,那么他们的静态方法各自归属两个类,与继承无关.并且静态方法无法被重写.
两个老师都同意了我的猜想-->子类继承父类,所以子类是父类的一种,因此可以解释为什么子类可以用子类类名.方法名的方式调用父类的静态方法.

同学你有问老师吗,你那边给的什么解释?
回复 使用道具 举报
仔细查查,是否拼错了
回复 使用道具 举报
大神们,看啦你们的代码,父类中静态的成员可以被继承,在多态里如果有静态方法,编译看左,运行也看做
回复 使用道具 举报
13411939415 来自手机 中级黑马 2016-7-28 00:25:45
21#
wyq0627java11 发表于 2016-7-27 22:56
静态方法可以被继承,子类运行,首先会运行父类静态方法,然后运行子类静态方法,你在子类静态方法中又调用 ...

兄弟,感觉你静态代码块和静态方法已经搞混了吧
回复 使用道具 举报
这个要看你到底是怎么写的。。。估计是你用法错了。。。
回复 使用道具 举报
静态方法可以被继承,子类运行,首先会运行父类静态方法,然后运行子类静态方法,你在子类静态方法中又调用父类的静态方法就会报错,因为静态方法只能运行一次!!!
回复 使用道具 举报
你得把代码贴出来,才好解决
回复 使用道具 举报
首先看了上面各位大神的评论,我得说一点,静态方法不是说只能用类名.来调用,也可以通过该类所创建的对象来调用,你们可以试试。
回复 使用道具 举报
java627 发表于 2016-7-27 21:34
有待商榷。。。。

同学,你有没有想过,你用父类调用的静态方法是用类名.方法名调用的?
回复 使用道具 举报
itismyhao 发表于 2016-7-27 13:41
[mw_shl_code=applescript,true]class Person
{
        public static void show()

有待商榷。。。。
回复 使用道具 举报
java627 发表于 2016-7-27 00:03
[Java] 纯文本查看 复制代码
public class Fu {
	public static void show() {
		System.out.println("父类的静 ...[/quote]

[mw_shl_code=applescript,true]class Person
{
	public static void show()
	{
		System.out.println("Person");
	}
}
class Student extends Person
{
/*	public static void show()
	{
		System.out.println("Student");
	}*/
}
class Demo
{
	public static void main(String[] args) 
	{
		Student s=new Student();
		s.show();
	}
}

子类什么都不写的时候,是可以执行show()
输出为Person
去掉多行注释
输出为Student
回复 使用道具 举报
java627 发表于 2016-7-27 00:03
[mw_shl_code=java,true]public class Fu {
        public static void show() {
                System.out.println("父类的静 ...

你可以自己敲代码试试,你要不理解我解释的,明天可以问问老师。
回复 使用道具 举报
代码贴出来吧 这样 我们不会猜
回复 使用道具 举报
[Java] 纯文本查看 复制代码
public class Fu {
	public static void show() {
		System.out.println("父类的静态方法");
	}
	public void method() {
		System.out.println("父类的一般方法");
	}
}
public class Zi extends Fu {
	public static void main(String[] args) {
		Fu fu = new Zi();
		fu.show();
		fu.method();
	}
	public static void show() {
		System.out.println("子类的静态");
	}
	public void method() {
		System.out.println("子类的一般方法");
	}
	
}

输出结果
父类的静态方法
子类的一般方法

点评

为什么打印的是,父类的静态方法  发表于 2016-7-27 00:12
回复 使用道具 举报
itismyhao 发表于 2016-7-26 23:11
父类的静态方法是可以被继承的,也可以被子类的方法覆盖.

对  静态方法也可以被继承
回复 使用道具 举报
java627 发表于 2016-7-26 21:14
父类的静态方法不能被子类继承,就算你在子类中写一个和父类一模一样的静态方法,那也只能算是子类的,不是 ...

父类的静态方法是可以被继承的,也可以被子类的方法覆盖.
回复 使用道具 举报
父类的静态方法不能被子类继承,就算你在子类中写一个和父类一模一样的静态方法,那也只能算是子类的,不是父类的。
回复 使用道具 举报
静态的方法类名点调用就可以了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马