关于抽象类不能被实例化的理解问题

jerry313 2008-09-26 10:48:46
抽象类不能被实例化,但是其非抽象子类被NEW出来的时候依然能调用父类的构造方法是么?

另外是不是可以说抽象类中非抽象的方法和变量都可以被子类所调用,只要不去NEW这个抽象类本身就可以了?

谢谢大家!
...全文
374 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sniper_Killer 2008-09-27
  • 打赏
  • 举报
回复
抽象類不能被實例話是可以理解的,因為它的抽象方法知識提供一種接口,一種標準,來表達一下我的子類應該具有怎樣的能力。至于他們這些能力有多大,抽象類本身就不管了。抽象類的子類如果不是抽象類的話,可以被實例話,子類可以overloead或者overwrite父類的方法。至于父類的變量要區分很多情況。
zx273064010 2008-09-27
  • 打赏
  • 举报
回复
抽象类可以有构造方法,是给子类用的,子类可以用super()调用父类的构造方法
如果一个类里有抽象的方法这个类必须是抽象类,不能创建对象
但反过来说是错的
子类中拿一个有实现的方法覆盖父类中没有实现的方法叫实现
父类中的的所有抽象方法必须被子类中的方法全部实现(这里的子类不是抽象的)
抽象的方法把声明和实现分离,留给子类去实现
chendabian 2008-09-27
  • 打赏
  • 举报
回复

public class AbstractClass extends abstr{

/**
* @param args
*/
public static void main(String[] args) {

AbstractClass ab = new AbstractClass();//抽象类不能被实例化,但是其非抽象子类被NEW出来的时候依然能调用父类的构造方法
System.out.println(ab.i);
ab.method2();//抽象类中非抽象的方法和变量都可以被子类所调用
ab.setIi(1);
System.out.println(ab.getIi());

}

@Override
void method1() {
System.out.println("method1");

}

}

abstract class abstr {
private int ii = 8;
int i = 7;
abstract void method1();

public void method2(){
System.out.println("method2");
}

public int getIi() {
return ii;
}

public void setIi(int ii) {
this.ii = ii;
}

}


楼主说的 是正确的
抽象类中的构造方法就是用于 其非抽象子类 实例化的
startym 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 MyLove_xia 的回复:]
子类是可以调用抽象类的非抽象构造函数。子类也可以调用抽象类中的非抽象方法!就是不能去new它~!
[/Quote]
构造函数没有抽象的吧!
抽象类中非抽象的方法和变量除了private修饰的都可以被子类所调用!
老班长涛哥 2008-09-27
  • 打赏
  • 举报
回复
子类是可以调用抽象类的非抽象构造函数。子类也可以调用抽象类中的非抽象方法!就是不能去new它~!
bit1010 2008-09-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 jerry313 的帖子:]
抽象类不能被实例化,但是其非抽象子类被NEW出来的时候依然能调用父类的构造方法是么?

另外是不是可以说抽象类中非抽象的方法和变量都可以被子类所调用,只要不去NEW这个抽象类本身就可以了?

谢谢大家!
[/Quote]

不错,是要调用抽象类的构造方法。
问楼主两个问题,理解了这两个方法,你就明白了:
(1)构造方法是用于实例化的,可是抽象类又不能被实例化,抽象类中为什么会有构造方法呢?
(2)抽象类中的构造方法可以调用抽象类的抽象方法吗?

wensheng_zh2007 2008-09-26
  • 打赏
  • 举报
回复
子类被new出来不就是要调用父类的构造方法吗?
如果父类中非抽象的方法和变量被继承下来,当然可以用他们了。
jerry313 2008-09-26
  • 打赏
  • 举报
回复
另外大家对这方面内容有好的理解或者是引用也请告诉我,再次感谢

62,616

社区成员

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

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