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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

25 个回复

倒序浏览
首先,静态方法和静态属性都是可以被继承的。静态方法属于类本身,并不属于某一个对象,报错的原因应该是你的调用方式不对,比如类A , A的一个对象a,你在其子类B中如果要调用父类的静态方法要通过A.method()这种方式调用,而不是a.method()调用。请问你是怎么调用父类方法的
回复 使用道具 举报
应该不会吧,methon()或者父类名字.methon()   都可以调用吧
回复 使用道具 举报
类名.调用就可以了吧
回复 使用道具 举报
生牛排 来自手机 中级黑马 2016-7-25 21:10:33
报纸
李铮 发表于 2016-7-25 19:42
类名.调用就可以了吧

非静态的方法也可以用类.方法()吗
回复 使用道具 举报
生牛排 发表于 2016-7-25 21:10
非静态的方法也可以用类.方法()吗

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

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

对  静态方法也可以被继承
回复 使用道具 举报
[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
回复 使用道具 举报
代码贴出来吧 这样 我们不会猜
回复 使用道具 举报
java627 发表于 2016-7-27 00:03
[mw_shl_code=java,true]public class Fu {
        public static void show() {
                System.out.println("父类的静 ...

你可以自己敲代码试试,你要不理解我解释的,明天可以问问老师。
回复 使用道具 举报
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
回复 使用道具 举报
itismyhao 发表于 2016-7-27 13:41
[mw_shl_code=applescript,true]class Person
{
        public static void show()

有待商榷。。。。
回复 使用道具 举报
java627 发表于 2016-7-27 21:34
有待商榷。。。。

同学,你有没有想过,你用父类调用的静态方法是用类名.方法名调用的?
回复 使用道具 举报
首先看了上面各位大神的评论,我得说一点,静态方法不是说只能用类名.来调用,也可以通过该类所创建的对象来调用,你们可以试试。
回复 使用道具 举报
你得把代码贴出来,才好解决
回复 使用道具 举报
静态方法可以被继承,子类运行,首先会运行父类静态方法,然后运行子类静态方法,你在子类静态方法中又调用父类的静态方法就会报错,因为静态方法只能运行一次!!!
回复 使用道具 举报
这个要看你到底是怎么写的。。。估计是你用法错了。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马