抽象类的方法必须被子类继承吗

lufee_pk 2013-11-22 08:28:18

求解?
...全文
4032 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lufee_pk 2013-11-23
  • 打赏
  • 举报
回复
引用 11 楼 Xiyuting 的回复:
1、从定义上讲,用abstract关键字来修饰一个类时,这个类叫做抽象类,方法亦然 2、含有抽象方法的类,必须被声明为抽象类。抽象类中不一定具有抽象方法 3、抽象类中可以定义有具体实现的方法 4、抽象类不能被实例化 抽象方法只需声明 不必实现 5、子类继承父类的过程中,如果父类为抽象类,那么子类必须实现父类的抽象方法,否则子类必须声明为抽象类 综上:抽象类是用来干什么的,就是用来继承,方法没有实现又不能实例化 一个残缺的类 留着它干什么 就像娶了老婆 难不成 还能不用不成 当然抽象类也是我们的程序层次化结构更加清晰
回复的很详细,我是初学的,大概懂了,谢谢各位的回复了。
threenewbee 2013-11-23
  • 打赏
  • 举报
回复
引用 13 楼 waynexuan 的回复:
[quote=引用 12 楼 caozhy 的回复:] [quote=引用 10 楼 waynexuan 的回复:] [quote=引用 7 楼 caozhy 的回复:] [quote=引用 6 楼 waynexuan 的回复:] [quote=引用 4 楼 caozhy 的回复:] 能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错[/quote] 好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。[/quote] 这些方法是不存在的,不然这个怎么解释?

class A{
	private void x() {}
}
class B extends A{
	private int x() {
		return 0;
	}
}
[/quote] 这没什么好争的。从实现的角度,当然基类的方法存在。从语言的角度来说,你可以视作它不存在。[/quote] JLS7 Page158 A private class member or constructor is accessible only within the body of the top level class (§7.6) that encloses the declaration of the member or constructor. It is not inherited by subclasses.[/quote] 是啊,你看不懂我说的意思么
WayneXuan 2013-11-23
  • 打赏
  • 举报
回复
引用 12 楼 caozhy 的回复:
[quote=引用 10 楼 waynexuan 的回复:] [quote=引用 7 楼 caozhy 的回复:] [quote=引用 6 楼 waynexuan 的回复:] [quote=引用 4 楼 caozhy 的回复:] 能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错[/quote] 好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。[/quote] 这些方法是不存在的,不然这个怎么解释?

class A{
	private void x() {}
}
class B extends A{
	private int x() {
		return 0;
	}
}
[/quote] 这没什么好争的。从实现的角度,当然基类的方法存在。从语言的角度来说,你可以视作它不存在。[/quote] JLS7 Page158 A private class member or constructor is accessible only within the body of the top level class (§7.6) that encloses the declaration of the member or constructor. It is not inherited by subclasses.
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
引用 10 楼 waynexuan 的回复:
[quote=引用 7 楼 caozhy 的回复:] [quote=引用 6 楼 waynexuan 的回复:] [quote=引用 4 楼 caozhy 的回复:] 能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错[/quote] 好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。[/quote] 这些方法是不存在的,不然这个怎么解释?

class A{
	private void x() {}
}
class B extends A{
	private int x() {
		return 0;
	}
}
[/quote] 这没什么好争的。从实现的角度,当然基类的方法存在。从语言的角度来说,你可以视作它不存在。
水无月青云 2013-11-22
  • 打赏
  • 举报
回复
1、从定义上讲,用abstract关键字来修饰一个类时,这个类叫做抽象类,方法亦然 2、含有抽象方法的类,必须被声明为抽象类。抽象类中不一定具有抽象方法 3、抽象类中可以定义有具体实现的方法 4、抽象类不能被实例化 抽象方法只需声明 不必实现 5、子类继承父类的过程中,如果父类为抽象类,那么子类必须实现父类的抽象方法,否则子类必须声明为抽象类 综上:抽象类是用来干什么的,就是用来继承,方法没有实现又不能实例化 一个残缺的类 留着它干什么 就像娶了老婆 难不成 还能不用不成 当然抽象类也是我们的程序层次化结构更加清晰
WayneXuan 2013-11-22
  • 打赏
  • 举报
回复
引用 7 楼 caozhy 的回复:
[quote=引用 6 楼 waynexuan 的回复:] [quote=引用 4 楼 caozhy 的回复:] 能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错[/quote] 好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。[/quote] 这些方法是不存在的,不然这个怎么解释?

class A{
	private void x() {}
}
class B extends A{
	private int x() {
		return 0;
	}
}
鸠摩(马智) 2013-11-22
  • 打赏
  • 举报
回复
都会继承的,继承不继承是要看访问控制符就行了
时光清浅 2013-11-22
  • 打赏
  • 举报
回复
子类会继承这四个方法,但如果子类不是抽象类,则子类必须实现testD(),楼主别忘了结贴
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
引用 6 楼 waynexuan 的回复:
[quote=引用 4 楼 caozhy 的回复:] 能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错[/quote] 好吧。其实这些方法也是存在的,只是受制于访问限制,无法直接访问。
WayneXuan 2013-11-22
  • 打赏
  • 举报
回复
引用 4 楼 caozhy 的回复:
能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
private方法啊!版主也会犯这种错
WayneXuan 2013-11-22
  • 打赏
  • 举报
回复
这是一个public抽象类,所有非private的方法都将被子类继承 子类如果想成为非抽象类,则必须重写实现父类的抽象方法
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
能够让一个派生类不继承基类的方法么?基类定义了方法,子类没有这个方法?似乎这才做不到。
jdgdf566 2013-11-22
  • 打赏
  • 举报
回复
都会继承。。
少羽 2013-11-22
  • 打赏
  • 举报
回复
子类会自动集成这四个方法,但是前面三个已经实现过的方法,子类可以不需要再实现了,如果子类一定要再次实现的话就叫做覆盖了。但是第四个抽象方法因为父类没有实现,所以子类必须实现。
Lsheep 2013-11-22
  • 打赏
  • 举报
回复
不是必须继承,而是必须实现。 最后一个abstract方法必须被Fruit的子类实现

62,635

社区成员

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

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