Java牛角尖【001】:抽象类必须有抽象方法吗?
2009-05-29 21:27
525 查看
我们都知道,有抽象方法的类是抽象类,反过来说,抽象类都有抽象方法吗?
其实这个问题非常明白,用abstract修饰的类就是抽象类,并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。
下面代码中是一个没有抽象方法的抽象类:
看完这段代码,我不尽又想,这个类可以被实例化吗?我怎么去调用该类中的公共方法呢?通过
这明显是不行的,抽象类不能被实例化,即使是一个没有抽象方法的抽象类,也同样不能被实例化。当然,还可以把printMessage方法改为static类型,那么就可以直接调用了,代码如下:
另外一个牛角尖问题是:static可否修饰类,将在下一篇中分析。
下一篇:
Java牛角尖【002】:类可以被static修饰吗?
其实这个问题非常明白,用abstract修饰的类就是抽象类,并不是说抽象类中必须有抽象方法,即使一个类中的方法全部实现过,也可以用abstract修饰为抽象类,所以抽象类不一定都有抽象方法。
下面代码中是一个没有抽象方法的抽象类:
abstract class DemoClass{ public void printMessage(String msg){ System.out.println(msg); } }
看完这段代码,我不尽又想,这个类可以被实例化吗?我怎么去调用该类中的公共方法呢?通过
DemoClass d = new DemoClass();
这明显是不行的,抽象类不能被实例化,即使是一个没有抽象方法的抽象类,也同样不能被实例化。当然,还可以把printMessage方法改为static类型,那么就可以直接调用了,代码如下:
package net.moon.insignificant.abstractclass; public class AbstractDemo { public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException{ DemoClass.printMessage("Hello, World"); } } abstract class DemoClass{ public DemoClass(){} public static void printMessage(String msg){ System.out.println(msg); } }
另外一个牛角尖问题是:static可否修饰类,将在下一篇中分析。
下一篇:
Java牛角尖【002】:类可以被static修饰吗?
相关文章推荐
- Java (Abstract Method)抽象方法、(Abstract Class)抽象类
- Java面向对象(4)—— 抽象方法、抽象类、接口
- 谈《Java中抽象类,抽象方法,重载和覆盖》
- java学习笔记7--抽象类与抽象方法
- java 抽象类,抽象方法
- Java面向对象-抽象方法,抽象类和接口
- JAVA之抽象类与抽象方法
- java中抽象类、抽象方法、接口与实现接口实例详解
- java学习之旅48--面向对象_21_抽象类_抽象方法
- 【Java学习笔记】接口 抽象类 抽象方法
- 分清Java抽象方法、抽象类以及接口
- 【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof
- 抽象类继承抽象类可以不重写父类的抽象方法,普通类继承抽象类必须重写父类中的抽象方法,实现接口也是同样的道理
- Java面向对象05-抽象方法,抽象类和接口
- 牛客网Java刷题知识点之为什么static成员方法不能是抽象方法,其必须实现
- 《黑马程序员》java笔记->【03】没有抽象方法的抽象类
- 抽象类可以不包括抽象方法 但是含有抽象方法的类必须是抽象类
- JavaSE8基础 子类必须重写所继承的抽象类中所有抽象方法
- JAVA中,什么是抽象类?抽象类中是否一定包还抽象方法?~
- java基础知识6-- 抽象类,抽象方法,接口,构造方法,类方法等易混淆的知识点