面向对象编程
面向对象是一种程序设计方法,使用对象和类等基本概念来进行程序设计,是一种符合人类思维习惯的编程思想。
类:是对现实世界事物的抽象定义,是对某类事物的描述。(类的成员包括属性和方法)
对象:是类的实例。
一、面向对象设计的核心技术
面向对象程序设计的核心技术主要是封装、继承和多态性。
- 封装
类是封装的基本单元。通过封装可以隐藏类的实现细节,也可以避免对类中属性的直接操作。可以通过类的公共接口访问类中的变量,而不必知道这个接口的具体实现方式。只要这个方法的名字和参数不变,即使类中的变量被重新定义,或方法的代码被修改,对类中的变量的访问也不会受到影响。比如,你在计算机上安装了一个声卡,你不必知道声卡的内部结构,也不必知道功能如何实现的,因为实现声卡功能的继承电路被封装了。你只要知道声卡应该装在电脑主板的什么位置,其他的设备如音箱,光驱怎样和声卡连接就可以了。
- 继承
继承是对类的功能的重用和扩充。通过对某一个类的继承产生一个新的子类,子类既有从某个类中继承下来的功能,又可以自行定义自己的变量和方法,产生新的功能。
- 多态性
多态性指的是方法的名字相同,但实现不同。即“同一接口,多个方法”。如有三个方法,分别用来计算圆、矩形、三角形面积,他们的名字可以都叫做area。
二、类的结构
Java是一种完全面向对象对程序设计语言。他所有的属性类型和方法都封装在类中,Java继承了C++的有点,但放弃了那些含糊,复杂和容易出错的特性。Java所实现的面向对象的特性,降低了程序的复杂性,实现了代码的可重用性,提高了运行效率。
- 类的声明格式
[修饰符]class 类名 [extends 超类名][implements 接口名]
{
类主体
}
修饰符包含访问权限有两种,要么默认,要么public。如果在一个源文件中有多个类的话,只能有一个类的权限可以是public,其余的类的权限必须是默认。public类的名字应该和文件同名,同时main函数也要放在该类中。Java中public权限指所有的类都可以访问,而默认的访问权限则是指只允许同一个包的类进行访问。
final:final修饰的类为最终类,这种类不能被继承。
abstract:抽象类,不能实例化
- 成员变量
[修饰符][static][final][transient] 变量类型 变量名;
修饰符:默认的,public,protected,private
static:静态变量
final:常量
transient:临时变量
- 成员方法
[修饰符]返回类型 方法名(参数表)[throws <异常类>]
{
方法体;
}
这里的修饰符包含访问权限,共有四种,即:默认的,public,protected,private。
static:静态方法
abstract:抽象方法(无方法体的方法)
final:最终方法(不能被子类继承的方法)
throws:抛出异常
- 访问权限的说明
public:所有的类都能访问
protected:不同包的子类可以访问
默认:同一包能访问
private:同一类可以访问
三、对象的构造和初始化以及对象的销毁
- 构造方法
构造方法没有返回值,且构造方法的名字应该和这个类一致。
例如:Date(int m,int n){...}
在创建对象的时候会自动调用相应的构造方法。
- 对象的销毁
对象的生命周期是指对象的创建、使用和销毁这一过程。对象的销毁是指当对象使用完成后,释放对象占用的资源。
Java能自动判断对象是否在使用,并自动销毁不在使用的对象,收回对象所占用的资源。在这种模式下我们并不知道对象销毁的具体时间。
此外,我们可以在程序中定义finalize()方法,使得对象在销毁之前执行该方法。该方法的基本格式如下:
[修饰符]void finalize(){}
java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。
(1).对象不一定会被回收。
(2).垃圾回收不是析构函数。
(3).垃圾回收只与内存有关。
(4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。
更多推荐
java面向对象程序设计
发布评论