Java面向对象编程思想

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一:Java面向对象的编程思想:

1.Java具有面向对象的三大特征:

封装:通过java的类来实现数据和操作方法的封装,对外界可以将每一个Java类都视为一个黑箱,只需要调用该黑箱提供的方法即可完成你想要的操作。

继承:通过类的继承,便于将统一的功能集中在父类中,实现代码的重用和可维护性多态:通过重载、重写与覆盖,实现不同类的不同形态特征。

以上这三大特征是通过具体的类、抽象类与接口技术来体现的。

2.把封装的类进行实例化,可以生成多个对象,这些对象通过消息传递来进行交互(消息传

递即激活指定的某个对象的方法,以改变其状态或让它产生一定的行为),最终完成复杂的任务。

3.一个类的使用过程,包括封装类,生成实例、使用实例进行三个操作3个过程。

4.一个类就是变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的

行为。

5.封装的类不是对象,要使用该封装的类进行操作,必须先生成这个类的一个实例-------

对象。对象的生成包括声明、实例化和初始化3个方面的内容。通常的格式为:

ClassName objectName=new ClassName([paramlist]);

ClassName 声明了一个类型为ClassName的对象。其中ClassName是组合类型(包括类和接口)。对象的声明并不为对象分配内存空间。

运算符new 为对象分配内存空间,实例化一个对象。new 调用对象的构造方法,返回对该对象的一个引用(即该对象所在的内存地址)。用new可以为一个类实例化多个不同的对象。这些对象占用不同的内存空间,因此改变其中一个对象的状态不会影响到其他对象的状态。

生成对象的最后一步是执行构造方法,进行初始化。由于对构造方法可以进行重写,所以通过对给出不同个数或者类型的参数会分别调用不同的构造方法

new 运算符返回对一个对象的应用,但与,C,C++中的指针不同,对象的引用是指向一个中间的数据结构,它存储有关数据类型的信息及当前对象所在堆的地址,而对于对象所在实际的内存地址是不可操作的,这就保证了安全性。

6.对于具有共同属性,又有自己特点的对象,就不能够通过单一的封装来实现了。此时可

以通过继承来实现。通过父类和子类,实现了类的层次,可以从最一般的开始,逐步特殊化,定义一系列子类。同时,通过继承也实现了代码的复用,是程序的复杂性线性增长,而不是呈几何增长。

7.继承是面向对象的基石,因为他允许创建分等级层次的类。运用继承,你能够创建一个

通用类,它定义了一系列相关项目的一般特性。该类可以被具体的类继承,每个具体的类都增加一些自己的特有的东西。在Java术语中,被继承的类叫做超类(supperclass),继承超类的类叫做子类(subclass)。因此,子类是超类的一个专用版本,它继承了超类定义的所有实例变量和方法,并且为它自己增添了独特元素。

继承是使用已经存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性的继承父类。

8.尽管子类包括超类所有的成员,但它不能访问超类中被声明为private的成员。只能被它

自己类中的其他成员访问,子类没有方法访问。

9.父类和子类的相互转换:在Java中可以将子类的引用赋给父类的对象,那么这时子类中

那些不是从父类继承来的成员将不再可见,我们可以再通过强制类型转换将这个父类再转换成子类类型,那些成员又变得可见了,由此可见,将子类引用赋给父类对象时,Java

虚拟机并没有将那些非继承成员丢弃。例如:

Bus bus=new Bus();

Car car=bus;

System.out.println(car.p);在编译时将产生错误,在car中p是不可见的。

下面将得到正确的结果,子类非继承域又可访问,没有被丢弃。

Bus bus2=(Bus)car;

System.out.println(bus2.z);

10.使用this和supper

Java拥有两个保留关键字this和supper,这两个关键字在继承的子类中使用。

this:

引用当前类的变量和方法。可以防止父类中也有相同的变量或者方法造成错乱。

super :

它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或者函数,基类与派生类中有相同成员定义时)

另外还有两种用法:

this(参数)引用当前类的构造函数。格式如下:

this(实参)

类似的super(参数)调用基类中的某一个构造函数

11.在子类的构造函数中,如果我们不显示的调用super()完成父类的构造,系统会自动

调用父类的构造函数,但是这样存在很多的问题。如果在父类的构造函数中我们自己定义了构造函数,那么系统提供给我们不带参数且函数体只是一对大括号的构造函数将被收回,这时在子类的构造函数中,如果我们不显式指定哪一个supper(),就会默认那个不带参数的父类构造函数,而如果我们自己定义的父类构造函数又全是不需要参数的话,就会产生编译错误

12.在实现了类的继承后,子类就拥有了父类可见的变量和方法,就可以引用这些变量和方

法了。但是,,同时子类也可以有同父类同名的变量和方法,在同一个类的内部,也可以拥有同名的、参数列表不同的方法,这就是多态,即同一个名字有多种实现状态。

Java多态是通过方法重写和方法的重载来实现的。

(1).覆盖:继承了父类的同名无参函数

当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖(注意返回值类型也必须相同,否则编译出错)。

(2).重载:继承了父类的同名有参函数

当子类继承了父类的一个同名函数,且方法不同,则称为重载。通过方法重载,子类可以重新实现父类的方法,使其具有自己的特征。

(3)重写:当前类的同名方法

通过方法重写,一个类中可以有多个具有相同名字的方法,由传递他们的不同参数个数和类型的参数来决定使用哪种方法。因此,重写的名称是当前类中的同名函数,不是父类中的函数名。

由以上可以知道,只有覆盖和重载是针对父类的,而重写是针对当前类的。

注意:对于方法的访问限制修饰词,子类方法要比父类的访问权限更高,例如父类为public ,那么子类为private则出现错误。子类抛出的异常应该是父类抛出异常或其子类。

13.在面向对象的概念中,所有的对象都是通过类来描述的,但是反过来却不是这样的,不

是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的

相关文档
最新文档