c语言编程笔录

首页 >   > 笔记大全

笔记大全

技术解答面向对象的初步认识c 类

更新时间:2023-07-12

什么是面向对象编程?

面向对象编程是一种编程范式,它通过将数据和操作数据的方法打包在一起,将数据的内部细节隐藏起来,并通过定义类来创建新的对象。这种编程方法通常有三个核心特性:封装、继承和多态性。

下面是一个简单的C++面向对象编程的示例:

#include<iostream>

using namespace std;

class Rectangle{
  private:
    int length;
    int width;
  public:
    void setLength(int l){
      length = l;
    }
    void setWidth(int w){
      width = w;
    }
    int getArea(){
      return length * width;
    }
};

int main(){
  Rectangle r;
  r.setLength(5);
  r.setWidth(4);
  int area = r.getArea();
  cout << "Area of rectangle: " << area << endl;
  return 0;
}

什么是类?

在面向对象编程中,类是一种用于创建新对象的模板或蓝图。类定义了对象的特性和行为。它包括属性(也称为成员变量)和方法(也称为成员函数)。属性是类内部数据,而方法是类内部的功能。下面是一个简单的C++类的示例:

#include<iostream>

using namespace std;

class Car{
  private:
    int speed;
    int gear;
  public:
    void setSpeed(int s){
        speed = s;
    }
    void setGear(int g){
        gear = g;
    }
    void display(){
      cout << "Speed: " << speed << endl;
      cout << "Gear: " << gear << endl;
    }
};

int main(){
  Car c;
  c.setSpeed(60);
  c.setGear(3);
  c.display();
  return 0;
}

什么是继承?

继承是面向对象编程中的一个特性,它允许程序员创建一个新的类,该类使用已经存在的类的属性和方法。这个新的类被称为子类或派生类,而已经存在的类则被称为父类或基类。继承允许与父类类似的操作在子类中被重复使用,同时可以在子类中添加新的方法或属性。下面是一个C++继承的示例:

#include<iostream>

using namespace std;

class Animal{
  private:
    string name;
  public:
    void setName(string n){
      name = n;
    }
    void display(){
      cout << "Name: " << name << endl;
    }
};

class Dog : public Animal{
  public:
    void bark(){
      cout << "Woof!" << endl;
    }
};

int main(){
  Dog d;
  d.setName("Buddy");
  d.display();
  d.bark();
  return 0;
}

什么是多态性?

多态性是面向对象编程中的一个特性,它允许程序员使用一个基类类型的指针或引用来引用子类对象。不同的子类对象可以使用相同的操作,但会产生不同的结果。这种能够根据上下文自动选择正确的操作的能力被称为动态绑定或后期绑定。下面是一个C++多态性的示例:

#include<iostream>

using namespace std;

class Shape{
  protected:
    int width;
    int height;
  public:
    virtual int area() = 0; //纯虚函数
    void setWidth(int w){
      width = w;
    }
    void setHeight(int h){
      height = h;
    }
};

class Rectangle : public Shape{
  public:
    int area(){
      return width * height;
    }
};

class Triangle : public Shape{
  public:
    int area(){
      return (width * height) / 2;
    }
};

int main(){
  Shape *s;
  Rectangle r;
  Triangle t;
  
  s = &r;
  s->setWidth(5);
  s->setHeight(4);
  cout << "Rectangle area: " << s->area() << endl;
  
  s = &t;
  s->setWidth(5);
  s->setHeight(4);
  cout << "Triangle area: " << s->area() << endl;
  
  return 0;
}