面向对象——类与对象1
程序员文章站
2024-03-15 19:42:00
...
什么是类
类的定义:具有共同属性和行为的事物所构成的集合
类的组成
- 类的声明
- 访问控制表示
- 成员变量(属性)
- 成员函数(方法,行为)
** 类外实现的函数
** 内联函数inline
类的基本概念
- 类是一个数据类型
- 类是概念,而对象是实际存在的
- 类和对象的关系类似于int num的关系
** 类对应int, 是类型。
**对象对应num,是这个类型的一个具体的实例 - 对象的定义:
**类名 对象名 ,如Student st1,st2;
类的成员限定
- 对于对象中成员的访问
公有(public)成员:可以从结构(类)的外部访问;
私有(private)成员:仅供结构(类)的内部(自身成员函数)访问;
保护(protected)成员:供结构(类)的内部及后代访问
注:面向对象“class类”中,成员的默认访问权限是:**私有(private)**的! - 访问方式:
st1.show(), st2.set(100), s1.name=“Hello”
指针类型的访问方式
** (* p).属性or方法
** p->属性or方法
** 具体例子: Student *p =& st1;
(*p).show(),p->set(100),p->name=“Hello” - 访问限定符作用域
从访问限定符“public/protected/private”后面的冒号“:”开始,直到下一个出现的访问限定符的整块内容都属于指定的权限!
类的定义
- “类”的数据成员可以是任何数据类型。
1)如整型int, 浮点型float, 字符型char, 数组, 指针, 引用等;
2)也可以是另外一个类的对象、指向对象的指针;
3)还可以是指向自身类的指针或引用;
4)可以是const常量,可以用decltype推断定义;p44 - 数据成员不能是:
1)不能是自身类的对象,不能是constexpr常量;
2)数据成员不能指定为自动(auto)、寄存器(register) 、外部(extern)存储类型
class Complex{
private:
int real;
float image;//数据成员
public:
void init(int r, float i){ real=r; image=i;}
double getReal() { return real; }
double getImage(){ return image; }//函数成员
};
void main(){
Complex a;
a.real=100; a.image=99.9f;
cout<<a.real<<","<<a.image<<endl;
a.init(200, 88.8f);
cout<<a.real<<","<<a.image<<endl;
cout<<a.getReal()<<",";
cout<<a.getImage()<<endl;
}
面向对象“类”中,成员权限定义的一般模式:
- 数据成员 → 私有(private);
- 函数成员 → 公有(public);
函数成员的声明与定义
函数成员的定义方式
(1)在类声明中定义(内置定义 -> 内置函数)
class X{……
public:
返回类型 成员函数名(参数列表) {
函数体(函数实现)
}
};
(2)在类声明之外定义(外置定义-> 外置函数)
class X{……
public:
返回类型 成员函数名(参数列表); //声明
};
返回类型 类名X::成员函数名(参数列表){
函数体(函数实现)
}
将类声明和其成员函数的定义分开是目前开发程序的通常做法;
把类的声明(头函数)看成是类的外部接口,类的成员函数的定义看成是类的内部实现;
对象赋值
封装
封装(Encapsulation) 是面向对象程序设计最基本的性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。类中声明,类外实现
class Student
{
private://私有的,只有自己知道
属性或者方法,如int age;void show();
public: //共有的
属性或者方法,如string name, void set(int a);
};
void Student::show(...}
void Student::set(int a)..}
下一篇: JUnit——Java单元测试框架