5.面向对象的程序设计与实现
- C++基本语法、JAVA基本语法、解题技巧、真题讲解
C++基本语法
- 类、派生类、类外函数实现:
class 类名
{
public:共有数据成员或公有函数成员的定义;
protected:保护数据成员或保护函数成员的定义;
private:私有数据成员或私有函数成员的定义;
}
在类外定义函数体的格式如下:
返回值类型 类名:: 成员函数名(形参表)
{
函数体
}
::是类的作用域分辨符,用在此处,放在类名后成员函数前,表明后面的成员函数属于前面的那个类。
class 派生类名:继承方式1 基类名,继承方式2 基类名2,...
{
private:派生类的私有数据和函数
public:派生类的公有数据和函数
protected:派生类的共有数据和函数
}
-
构造函数、析构函数:
-
构造函数相对于一般函数来说,具有如下特殊的性质:
- 构造函数的函数名必须与定义它的类同名。
- 构造函数没有返回值。如果在构造函数前加void是错误的。
- 构造函数被声明定义为公有函数。
- 构造函数在建立对象时由系统自动调用。
-
析构函数相对于一般函数来说,具有如下特殊的性质:
- 析构函数没有任何参数,不能被重载,但可以是虚函数,一个类只有一个析构函数。
- 析构函数没有返回值。
- 析构函数名与类名相同,但在类名前加上一个逻辑非运算符“~”,以示与析构函数对比区别。
- 析构函数一般由用户自己定义,在对象消失时由系统自动调用,如果用户没有定义析构函数,系统将自动生成一个不做任何事的默认析构函数。
-
对象指针、对象引用、虚函数、纯虚函数:
- 对象指针的语法定义形式如下:
- 类名 *对象指针名;
- 对象引用的定义形式如下:
- 类名 &对象引用名=被引用对象;
- 对象指针的语法定义形式如下:
-
注意:通过对象名或对象引用访问对象的成员,使用的运算符是“.”;而使用对象指针访问对象的成员,使用的运算符是“–>”。如“对象指针名–>数据成员名或:对象指针名–>成员函数名(参数表)
-
虚函数定义的一般语法形式如下:
virtual 函数类型 函数名(形参表) { 函数体; } 纯虚函数定义形式如下: virtual 函数名=0;
JAVA基本语法
- 类和定义
类的定义格式如下:
[import包]
[类修饰符]class xxxclass [extends超类] [implements接口]{
public:共有数据成员或公有函数成员的定义;
protected:保护数据成员或保护函数成员的定义;
private:私有数据成员或私有函数成员的定义;
}
说明:
·import包:引入包中的类。
·类修饰符:主要有四个修饰符,public、abstract、final、private。
·class为关键字,xxxclass为类名,命名遵循Java标识符的命名规则。
·extends为继承关键字,implements为接口关键字。
例题:
class Department{/*代码省略*/}
class SqlserverDepartment (3) {}
abstract class Shape{
abstract public void draw()
}
class Rectangle extends Shape{}
当使用extends关键字时,表明继承关系,如上所示:继承的是抽象类,要加abstract关键字。
-
接口:JAVA中的接口是一种特殊的类,其内部的实现方法只有定义,没有实现,这就是特殊所在,接口定义如下:
-
interface IFactory{}
class SqlServerFactory implements IFactory
-
-
若类使用implements关键字,表明是接口类。
解题技巧
- 定义了类的对象后,必须要先初始化(使用new关键字);
- 接口(interface)和抽象类(abstract class)(子类继承关键字不同,为implements和extends);
- 抽象类中可以有普通的方法(有函数体),也可以有抽象方法(无函数体,方法前要加关键字abstract),而接口中的方法都是默认为抽象方法(因为默认,无需再加任何关键字标识);
- this的使用,指代当前对象,一般由两个重名变量的赋值时会使用到,如在构造函数中,参数名和私有变量名相同都为name,就要使用this.name=name;
- 题目所给的类图很重要,从中可以查看类之间的关系以及类中的方法。
- JAVA题总结:
- 抽象类、接口相关,继承、实现关键字,抽象类中有抽象方法和普通方法,抽象方法加abstract,接口中方法都是抽象方法,因此反而不需要加abstract。
- 类的成员变量、类的方法中参数很重要,若参数是类的对象,则一般会在实现中使用此对象调用类的方法:另外赋值中要注意this的使用,当参数名和变量名相同时使用this。
- 结合代码的上下文,明确类之间的关系,结合方法实现的功能,方法中的参数,以及类的成员变量,去解决问题。