一、面向对象思想
从基本的概念来看:
面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。
我想一般的初学者基本上很难理解概念。换句话说面向对象就是一种程序设计方法。这是一张面向对象的思维导图。学习面向对象先要了解什么是类,什么是对象,图中也有解释。
面向对象的三个基本特征:封装、继承、多态
封装:是将一类事物的属性和行为抽象成一个类,一般是使其属性私有化,行为公开化,提高了数据的隐秘性的同时,使代码模块化。
继承:基于已有的类的定义为基础,构建新的类,已有的类称为父类,新构建的类称为子类,子类能调用父类的非private修饰的成员,同时还可以自己添加一些新的成员,扩充父类,甚至重写父类已有的方法,更其表现符合子类的特征。
多态:对象的多态性是指在父类中定义的属性或方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或方法在父类及其各个子类中具有不同的语义。
注意:Java语言是单继承的,即只能有一个父类,但Java可以实现多个接 口,可以防止多继承所引起的冲突问题。
二、类与对象的关系
对象:是该类事物的具体体现
类:是一组相关的属性和行为的集合。
举例:
类 学生
对象 班长就是一个对象
类与对象的关系如图
图纸就相当于类即造汽车的模型,汽车就是对象即类的实例。
java中用class描述事物
成员变量就是事物的属性
成员方法就是事物的行为
定义类其实就是定义类的成员(成员变量和成员方法)
三、类
Java语言中一个类的实现包括:类声明和类体。
类声明语法格式如下:
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] { //类体 }
class是声明类的关键字
className是自定义的类名
class前面的修饰符public、abstract、final 用来声明类,它们可以省略
superclassName为父类名,若省略则该类继承Object类(Object类所有类的根类)
interfaceNameList是该类实现的接口列表,接口列表中的多个接口之间用逗号分隔。
public class Animal extends Object {//extends Object可以省略 //类体 }
类体是类的主体,包括数据和操作,即成员变量和成员方法。
成员变量
声明类体中成员变量语法格式如下:
class className { [public | protected | private ] [static] [final] type variableName; //成员变量 }
type是成员变量数据类型
variableName是成员变量名
type前的关键字都是成员变量修饰符,它 们说明如下:
public、protected和private修饰符用于封装成员变量。
static修饰符用于声明静态变量,所以静态变量也称为“类变量”。
final修饰符用于声明变量,该变量不能被修改。
下面看一个声明成员变量示例:
public class Animal extends Object { //动物年龄 int age = 1; //动物性别 public boolean sex = false; //动物体重 private double weight = 0.0; }
成员方法
声明类体中成员方法语法格式如下:
class className { [public | protected | private ] [static] [final | abstract] [native] [synchronized] type methodName([paramList]) [throws exceptionList] { //方法体 } }
type是方法返回值数据类型,methodName是方法名。type前的关键字都是方法修饰符,它们说明 如下:
public、protected和private修饰符用于封装方法。
static修饰符用于声明静态方法,所以静态方法也称为“类方法”。
final | abstract不能同时修饰方法,final修饰的方法不能在子类中被覆盖;abstract用来修饰抽象方 法,抽象方法必须在子类中被实现。
native修饰的方法,称为“本地方法”,本地方法调用平台本地代码(如:C或C++编写的代 码),不能实现跨平台。
synchronized修饰的方法是同步的,当多线程方式同步方法时,只能串行地执行,保证是线程安 全的。
方法声明中还有([paramList])部分,它是方法的参数列表。throws exceptionList是声明抛出异常列表。