[Java]abstract class (抽象类)的一个问题

作者在 2007-05-22 21:08:00 发布以下内容

[Java]abstract class (抽象类)的一个问题

Java抽象类的一个问题
在讲抽象类时,老师为我们总结了一下抽象类的两点特性(并发给我们相应的ppt课件):
1.继承抽象类的子类如果不是抽象类,则必须定义(或实现)抽象类内的抽象方法;
2.抽象类中要包含至少一个抽象方法。
我对第二个特点产生疑问,所以试着修改课本的一个例子,把程序里的一个抽象类里的抽象方法删掉,程序照样可以在JCreator上无错误且无警告地运行。此程序如下:
/************************************************************/
public class Test
{
 public static void main(String args[])
 {
  D200_Card my200=new D200_Card();
  my200.balance=50.0;      

 
  System.out.println("父类的剩余金额为:"+my200.getBalance());
  System.out.println("子类的剩余金额为:"+my200.balance);  
 }
}

abstract class PhoneCard
{
 private double balance;
 double getBalance()
 {
  return balance;
 }
}

class D200_Card extends PhoneCard
{
 double additoryFee;
 double balance;
}

/*************************************************************/
程序运行结果为:
父类的剩余金额为:0.0
子类的剩余金额为:50.0

/***********************************/

可见抽象类里不一定非要一个抽象方法啊。

/********************************************/

一些人认为学java讨论这些问题是钻牛角尖了,那我就没事找点事做吧,呵~

1.查了一下《Thinking in Java(Second Edition)》的中文版,里面也说到:若将某个class声明为abstract,并不强迫你得将所有的函数都声明为abstract。可见,抽象类里不一定非要一个抽象方法。
2.抽象里的含义就是   它必须被具体类实现
3.那我可不可以这样理解:抽象类里必须有抽象方法才好给具体类继承,也就是说具体类继承抽象类的方式就是实现抽象类里的抽象方法呢?好像也不一定。但java有个原则就是非抽象类中不能存在抽象方法。
4.一个抽象类的子类如果不是抽象类,则它必须为父类中的所有抽象方法书写方法体。

我的另一个新博:http://blog.chinaunix.net/u1/40330/

 

Java | 阅读 2497 次
文章评论,共0条
游客请输入验证码
浏览95111次