您的位置:首页 > 编程语言 > Java开发

JAVA面向对象编程基础复习(一)面向对象基本概念

2012-05-09 22:06 351 查看
从今天开始有计划的写一些博文。内容主要涉及JAVA语言、面向对象编程、设计模式、android开发(这才是重点嘛)。今天开始写 JAVA面向对象编程基础复习这个系列的文章。

JAVA面向对象编程基础复习目录

(一)面向对象基本概念

(二)异常处理与自定义异常

(三)多线程

(四)反射与注释

(一)面向对象的基本概念
1.面向对象?还是面向屏幕?面向对象概述

1.1对象的概念

在面向对象编程语言中,最重要的概念就是对象了。不是你对象~对象是一切实体概念的抽象概念。比如我现在打字的键盘,它就是个对象keyboard,我看到的显示器monitor等等等~在面向对象语言的大阵营中JAVA算是个典型代表了,接下来我们所有的例子都是用JAVA语言描述的,不过也不妨碍不会JAVA语言的同学。因为思想都是相同的,只是在实践的时候有细微的差别。

1.2类和实例

类Class和实例Instance的关系就相当于广义和狭义,整体和局部的关系。

类是对一类对象的抽象!例如人,每个人有不同的身高体重,性别年龄等不同的属性(马上讲到)还有很多其他的功能,比如吃饭,上网,看电影(方法,马上讲到)。每个人都不同,但是把这些属性和方法抽象出来,就能得到一个广义的“人”。此人在日常生活中,我们用“人类”这个词来表述。

如果看完上面这段话,你还是没有明白类和实例的关系。大声读;“我是一个人,我不是人类,但我属于人类”。明白了吗?

类和实例的关系一般都可以套用“[实例]是一种/一个[类]”或者“[实例]属于[类]”例如:键盘是一种输入设备,屏幕是一种输出设备。

1.3属性和方法

属性嘛,就一句话“某一类实体所共有的特征的抽象”

方法,面向对象不像面向过程语言那样,把方法独立出去。面向对象语言中方法是属于类的,是一类实体所能实现的功能的抽象描述。例如输入设备可以进行输入,输出设备可以进行输出。

2.封装!不该看到你别看

2.1封装的定义

封装是面向对象一个显著特点之一。封装指的是将一些不必要的成员变量和方法封装在类的内部(只有本类自己可以使用)在外部操作的时候使用类提供的指定方法(public 关键字修饰的方法),这些方法叫做类的接口。

2.2访问权限控制

在java中访问权限控制其实说白了就是几个关键字如何使用,不同的关键字修饰的变量或者方法,访问权限是不相同的。这些关键字有private,protected,public,还有一个就是毛都不写的默认。

private:私有的,用private修饰的数据成员和方法只能在当前类中所调用。类外看不够到private修饰的任何成员。

protected保护的,用protected修饰的成员可以被同一个包中的其他类访问,也可以被当前类的子类访问。如果子类不在同一个包中,也是可以访问的。

public公共的,用public修饰的成员可以被所有的类访问。

默认,默认权限的情况下,被修饰的成员可以被同一个包中的类访问,而不同包即便是子类,也不可以访问。

2.3属性的封装

一句话,全部属性定义成private,通过getter/setter来设置其读写,只写,只读权限。

2.4方法的封装

同样使用关键字进行描述,访问权限同属性的封装。

2.5构造函数

也叫做构造器,是类成员中一个特殊方法。方法名和类名完全相同,方法没有返回值类型。

如果我们自己不写构造函数的话,JAVA编译器会自动为我们的程序加上一个默认的构造函数,这个构造函数的方法体是空的。

一般情况下构造器中都是进行一些初始化的操作,当我们使用new关键字来创建类的对象时,自动回调用构造器。所以呢!构造器还是写出来好,别等着编译器给我们加上了,因为几乎每个类都要进行初始化的,不是么?以后介绍设计模式的文章中,“单例模式”也是是利用了默认构造函数的访问权限来进行限定的~到时候再讲。

3.方法的重载和重写 都是重字辈的,区别大大滴,思密达~

3.1方法的重载

方法的重载指的是不同的方法是用相同的方法名,但是不同的方法参数是不同的。举例,当我们求周长的时候可能不同的图形是用的方法是不同的。圆形的周长是2*PI*R,我们设计的方法calc()可能是只有一个参数R半径。而当我们求矩形的时候我们设计函数calc()就可能会有2个参数宽和长。

PS:由于JAVA的类型自动转换机制,我们在设计重载方法的时候一定要考虑好参数的类型。比如func(int,double)和func(double,int)这两个就有可能出现问题。如果我们调用的时候为func(2,3);这是Eclipse会提示The method func(double, int)
is ambiguous。这是因为Java自动类型转换在运行的时候小得想大的转换,整型向实型转靠拢 所以2和3都可以转换成double型,编译器就傻了,用哪个方法呢?

3.2重载构造器

既然构造器也是一种方法,那么他必须可以被重载。不过既然他又是特殊的方法,重载的时候也有点特别的地方。

多个构造器重载方法存在的时候,在构造器中调用重载构造器不能使用方法名(同类名),必须使用关键字this,并且调用重载构造器的语句必须是构造器方法的第一行。这个可以参加我的例子。

3.4继承和重写(重写的概念应该由继承引出来,所以这两个概念放到一起讲了)

面向对象的又一个重要概念,继承~顾名思义就是从另外一个类中继承一些东西为己所用。这是面向对象编程的一个突出优点,代码实现了复用。PS:当然面向过程也是可以复用的,Ctrl+C Ctrl+V

在JAVA中子类再定义的时候使用extends关键字来表明父类。

在初始化子类的时候会调用父类的构造器,默认是调用不带任何参数的父类的构造器,如果想要调用其他构造器,要使用super关键字。

伴随着继承而来的就是重写了,子类可以通过重写来改变从父类继承得到的方法,重写可以改变方法的返回值和访问权限。子类中重写的方法必须保持父类原有的方法的权限或者比其更进一步扩大访问权限。重写方法的返回值类型必须是原方法的返回值类型的子类。

4.多态、抽象类和接口

to be continue
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: