对象封装
一般来说,一个对象,具有如下性质:
- 一个区别于其他对象的名字
- 若干个属性(数据,或字段)
- 若干个行为(函数,或方法)
在C++中,使用public和private关键字来暴露或者保护对象内部的实现
//C++
#include <iostream>
#include <string>
using namespace std;
//类定义
class Person
{
public:
Person(string&& name,int salary) : name(name), salary(salary) {
};
public://公共字段
string name;//公共属性
void SayHi() {
cout << name << ":hi" <<endl; };//公共方法
private://私有字段
int salary;//私有属性
void Sleep() {
cout << "sleep"; };//私有方法
};
int main()
{
//在栈上创建对象
Person bobFromStack("Bob",233);
//在堆上创建对象
auto pAliceFromheap = new Person("Alice",234);
bobFromStack.SayHi();
pAliceFromheap->SayHi();
system("pause");
return 0;
}
在Rust中,所有名字默认是private的,只能在当前文件中访问,如果要将名字暴露给外部,需要使用pub关键字
路径用于引用模块树中的项 - Rust 程序设计语言 中文版 (rustwiki.org)
//Rust
pub struct Person {
//导出结构体名
pub name:String,//可供其他模块访问的公共字段
salary:i32,//仅能在本文件中访问的私有字段
}
impl Person {
//为结构体实现方法
pub fn SayHi(&self) {
//可供其他模块访问的公共方法
println!("{}:Hi",self.name);
}
fn Sleep(&self){
//仅能在本文件中访问的私有方法
println!("Sleep");
}
}
fn main() {
//在栈上创建对象
let bobFromStack = Person{
name: String::from("Bob"),salary