几个关于【抽象类和静态方法】的新人问题

bigbro001 2009-09-07 02:46:54
1.抽象类必须有构造器么?
抽象类既然都不能被实例化,要构造器有什么用呢?

2.抽象类的构造器是不是最好声明为protected?
例如A是一个抽象类,有人说如果构造器声明为protected,就可以防止A a这样的代码出现,这是什么意思呢?

3.静态方法可以被重写么?
静态方法是直接通过类名调用的,因此不存在针对具体子类对象的动态方法分配,也就不可能被重写,这种理解对么?
...全文
561 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Orecal 2010-08-17
  • 打赏
  • 举报
回复
抽象类的抽象方法要不要给出方法体?一般方法呢? 静态方法呢?
Orecal 2010-08-17
  • 打赏
  • 举报
回复
学习了……
yanliang_xt 2009-09-09
  • 打赏
  • 举报
回复
3.静态方法可以被重写么?

静态方法没我多态性,重写它有意义吗?
yanliang_xt 2009-09-09
  • 打赏
  • 举报
回复
1.抽象类必须有构造器么?

必须有:因为抽象类往往是为了被子类继承的,子类在实例化的进修就必须首先要实例化其父类,所以父类必须要一个构造函数。无论是默认构造函数还是有参构造函数,必须提供至少一个。

就像小猴子的代码中:

abstract class A{
public A(int a){

}
}

class B extends A{
public B(int a){ //此处会报错 因为A没有申明无参数的构造方法
super(a);
}
}


只需要显式的调用有参的构造函数就行了。
啊_sdf12 2009-09-09
  • 打赏
  • 举报
回复
学习。up
songchaomin 2009-09-09
  • 打赏
  • 举报
回复
过路看看.这里的好人真多.非常感谢你们
树成 2009-09-09
  • 打赏
  • 举报
回复
1.抽象类必须有构造器么?
无论你建立任何一个类,无论这个类是不是抽象类,它一定有一个构造函数,就算你不显示声明构造函数它都有一个构造函数。
2.抽象类一般都是用来继承的,所以它的构造函数声明一般都是public,至于是不是protected就看你的实际需求了,如果你希望这个抽象类只能被同一个包中的类继承,那么你可以使用protected。
3.静态方法不会被覆盖。
justinavril 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bigbro001 的回复:]
多谢楼上这位热心的大侠。。。
[/Quote]
我不是大侠,叫我小猴好了,呵呵...
bigbro001 2009-09-07
  • 打赏
  • 举报
回复
多谢楼上这位热心的大侠。。。
justinavril 2009-09-07
  • 打赏
  • 举报
回复
1.抽象类必须有构造器么?
抽象类既然都不能被实例化,要构造器有什么用呢?
//有没有都不要紧 但是有时候需要它 比如抽象类能够很好地规范子类的构造方法的话 定义了也无妨 而且还有种特殊情况 请看代码:

abstract class A{
public A(int a){

}
}

class B extends A{
public B(int a){ //此处会报错 因为A没有申明无参数的构造方法

}
}


2.抽象类的构造器是不是最好声明为protected?
例如A是一个抽象类,有人说如果构造器声明为protected,就可以防止A a这样的代码出现,这是什么意思呢?
//protected是包内和子类可见的,跟你是不是抽象类没多大关系吧?Object类是一切类的父类,你看看Object类的构造方法是什么的?是public的。还是那句话 看你需求了
3.静态方法可以被重写么?
静态方法是直接通过类名调用的,因此不存在针对具体子类对象的动态方法分配,也就不可能被重写,这种理解对么?
//重写跟是不是静态的无关

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧