Java编程那些事儿68——抽象类和接口(一)
8.9 抽象类和接口
在实际的项目中,整个项目的代码一般可以分为结构代码和逻辑的代码。就像建造房屋时,需要首先搭建整个房屋的结构,然后再细化房屋相关的其它的结构,也像制造汽车时,需要首先制作汽车的框架,然后才是安装配件以及美化等工作。程序项目的实现也遵循同样的道理。
在项目设计时,一个基本的原则就是——“设计和实现相分离”。也就是说结构代码和逻辑代码的分离,就像设计汽车时只需要关注汽车的相关参数,而不必过于关心如何实现这些要求的制作。程序设计时也是首先设计项目的结构,而不用过多的关系每个逻辑的代码如何进行实现。
前面介绍的流程控制知识,主要解决的是逻辑的代码的编写,而类和对象的知识,则主要解决结构代码的编写。那么还有一个主要的问题:如何设计结构代码呢?这就需要使用下面介绍的抽象类和接口的知识了。
8.9.1 抽象类
抽象类(Abstract Class)是指使用abstract关键字修饰的类,也就是在声明一个类时加入了abstract关键字。抽象类是一种特殊的类,其它未使用abstract关键字修饰的类一般称作实体类。例如:
public abstract class A{
public A(){}
}
抽象方法(Abstract Method)是指使用abstract关键字修饰的方法。抽象方法是一种特殊的方法,其它未使用abstract关键字修饰的方法一般称作实体方法。
public abstract void test();
抽象类和实体类相比,主要有以下两点不同:
l 抽象类不能使用自身的构造方法创建对象(语法不允许)
例如下面的语法是错误的:
A a = new A();
但是抽象类可以声明对象,例如下面的代码是正确的:
A a;
&nb
相关文档:
缓存对象需要知道对象占用空间的大小,可以事先设置好每种类型的大小,此方法对普通的对象起效,Jive论坛中的对象也是采用这种办法来获取对象的大小的(取自Jive).
public class CacheSizes {
/**
* Returns the size in bytes of a basic Object. This method should only
* be used for actual Object obje ......
java中的反射经常被用在一些框架搭建上,他能够让我们很方便的对自己未来将使用的类,方法和变量进行访问。个人觉得有种黑客的味道在里面。当我们知道一个类的类名后,我们基本上可以使用反射的到它的一切。包括他的private的方法和变量等(当然访问他们的使用需要使用的是getDeclared***(**))。另外,据 ......
Java和其他语言不同的是,Java是运行于Java虚拟机(JVM)。这就意味着编译后的代码是以一种和平台无关的格式保存的,而不是某种特定的机器上运行的格式。这种格式和传统的可执行代码格式有很多重要的区别。具体来说,不同于C或者C++程序,Java程序不是一个独立的可执行文件,而是由很多分开的类文件组成,每个类文件对应一个 ......