类与对象3

Posted yuanxinglan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类与对象3相关的知识,希望对你有一定的参考价值。

#include<string>
#include<iostream>
using namespace std;
class ExamInfo
public:
ExamInfo(string name,char grade)
:name(name),mode(GRADE),grade(grade)
ExamInfo(string name,bool pass)
:name(name),mode(PASS),pass(pass)
ExamInfo(string name,int percent)
:name(name),mode(PERCENTAGE),percent(percent)
void show();
private:
string name;
enum
GRADE,
PASS,
PERCNETANGE
mode;
union
char grade;
bool pass;
int percent;
;
;
void ExamInfo::show()
cout<<name<<":";
switch (mode)
case GRADE:cout<<grade;
break;
case PASS:
cout<<(pass ? "PASS":"FAIL");
break;
case PERCENTAGE:
cout<<percent;
break;

cout<<endl;

int main()

ExamInfo course1("English",\'B\');
ExamInfo course2("Calculus",true);
ExamInfo course3("C++Programming",85);
course1.show();
course2.show();
course3.show();
return 0;

python 面向对象专题:类的空间问题类与对象之间的关系类与类之间的关系

https://www.cnblogs.com/liubing8/p/11308127.html

 

1. 类的空间问题

  • 添加对象属性

    # 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加
    
    class Human:
        mind = \'有思想的\'
        def __init__(self, name, age):
            self.name = name
            self.age = age
        def eat(self,argv):
            Human.body = argv
            print(\'吃饭\')
    
    sun = Human(\'张三\', 18)
    sun.eat()
    print(sun.__dict__)
    sun.weight = 130
    print(sun.__dict__)
  • 添加类的属性

    # 类的内部
    sun.eat(\'有头有脸\')
    
    # 类的外部
    Human.body = \'有头四肢\'
    print(Human.__dict__)

     

 

2. 类与对象之间的关系

 

  • 查找顺序角度分析类与对象之间的关系

    对象空间与类空间有相同的名字, 对象. 肯定先从对象空间查找.
    
    查询顺序:  
          对象.名字: 对象空间  ______类对象指针_______--> 类空间 ---> 父类空间
          类名.名字: 类空间 -----> 父类空间
            
    1.每个对象都可以从类的空间去找,不可以去别的对象空间去找
    2.单向不可逆,类名不可以找到对象的属性
    3.__init__产生对象空间,不是空的,有一个对象指针

 

3. 类与类之间的关系

 

  • 依赖关系:将一个类的类名或者对象传入另一类的方法中

    class Elephant:
       def __init__(self,name):
           self.name = name
       def open(self,obj):
           print(f\'{self.name} 默念三声: 3,2,1 开门\')
           obj.be_open()
       def close(self):
           print(f\'{self.name} 默念三声: 3,2,1 关门\')
    class Refrigerator:
       def __init__(self, name):
           self.name = name
       def be_open(self):
          print(f\'{self.name}冰箱 被打开了\')
       def be_close(self):
           print(f\'{self.name}冰箱 被关闭了\')
    
    qiqi = Elephant(\'奇奇\')
    haier = Refrigerator(\'海尔\')
    qiqi.open(haier)

     

  • 组合关系:将一个类的对象封装到另一个类的对象的属性中

    class Boy:
        def __init__(self, name, girlfriend=None):
            self.name = name
            self.girlfriend = girlfriend
        def have_a_diner(self):
            if self.girlfriend:
                print(f\'{self.name}请他的{self.girlfriend.age}岁的,{self.girlfriend.body}的女朋友{self.girlfriend.name}一起烛光晚餐\')
            else:
                print(\'吃什么吃\')
        def girl_skill(self):
            print(f\'{self.name}的女朋友的技能:\')
            self.girlfriend.skill()
    class Girl:
        def __init__(self,name,age,body):
            self.name = name
            self.age = age
            self.body=body
        def skill(self):
            print(f\'{self.name} 会做饭\')
    
    ergou = Boy(\'二狗\')
    qiao = Girl(\'\', 58, \'小钢炮\')
    ergou.girlfriend = qiao
    ergou.have_a_diner()
    ergou.girl_skill()

     

  • 总结:依赖与组合让类与类产生关系,增强耦合性

 

以上是关于类与对象3的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.5(类与对象)

Java的类与对象

Java的类与对象

JAVA 类与对象题目3

3 类与对象

3-类与对象-动手动脑