类,对象 ,封装,实例变量,类变量,继承,多态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类,对象 ,封装,实例变量,类变量,继承,多态相关的知识,希望对你有一定的参考价值。

类:对一类事物的抽象。例如:人 ,狗,猫,鸟。。。这样是一大类的概括。讲人,可以指很多人,狗也可以分很多种狗

对象:具体的某个类的实例。就想 张三--》指的就是人这个类下面的具体的某一个实例。泰迪 就是狗这个类下面的某个实例

面向对象的三个特性:

  封装:就是将属性给封装起来,这个是你特有性质,你可以让外界知道,也可以不让外界知道

例如:

  

# Author:zylong
class Person:
    #人都有性别,姓名,身高,体重
    def __init__(self,name,sex,heigh,weigh,age):
        #这些属性可以直接被外界访问的
        self.name = name
        self.sex = sex
        self.heigh = heigh
        self.weigh = weigh
        #这些属性只有类提供方法,才能被访问
        self.__age = age
    def getAge(self):
        return self.__age
    
    #私有方法也是一样的,就是定义的时候以__开头,外界是不能直接方法的
#实例一个类

p1 = Person("张三","",170,60,22)
#这就创建了一个张三的实例,这里要清楚 类实例的过程.属性和方法的区别
#封装:这时候就可以看出,将 姓名,性别,身高,体重,年纪 封装到p1中

#当我想知道p1这个人的age的时候
#print(p1.__age)#会提示没有这个属性,是因为这个属性不能直接被外界访问,只鞥通过类提供的getAge这个方法来获取
print(p1.getAge())#这样就获取到 年纪

 

类属性和实例属性:

#类属性和实例属性
class Dog:

    #这个就是类属性
    legNums = 4

    def __init__(self,sex,heigh,weigh,age):
        #这里面的就是实例属性
        self.sex = sex
        self.heigh = heigh
        self.weigh = weigh
        self.age = age


d1 = Dog("",50,30,3)
print(d1.legNums)#这里显示的是4
#如果d1想改变它的腿数
d1.legNums = 3
print(d1.legNums)#这样就变成了3
#这里要明白一点,这里改变的不是类变量的值,这里是给d1自己增加了一个属性,legNums = 3,。这里要清楚类实例的过程
#访问实例属性的时候,先访问自己的实例中是否有,如果没有再去类中找是否有,如果还没有就抛异常
#如果类属性,是集合列表等,这里要明白,列表,集合等存储的方式。其实类中保存的是对列表的引用,其他地方改变列表的时候,类中的这个列表就会改变

继承

 

# Author:zylong
#这里要知道一点:
class Person:

    def __init__(self,name,age):
        #构造器,类通过这个来实例这个类。这个跟实例属性一样,如果本类有,就不会去找父类的,
        # 如果本类有__init__方法,就不会去找父类的,可以再这里自己调用父类的__init__方法
        pass

class WhitePerson(Person):

    def __init__(self,name,age):
        #通过这样的方式,python会自动搜素它的父类
        super(WhitePerson,self).__init__(name,age)

#python 2.x是 深度优先 3以后都是广度优先

 

多态:一种接口,多种实现

# Author:zylong
#python中多态--一个接口多种实现

class Person(object):

    def __init__(self,name,age):
        self.name = name
        self.age = age

    def objRun(obj):
        print("%s is run"%obj.name)
class WhitePerson(Person):
    pass

class BlackPerson(Person):
    pass

p1 = WhitePerson("zhang",20)
p2 = WhitePerson("yu",21)

Person.objRun(p1)
Person.objRun(p2)

 

以上是关于类,对象 ,封装,实例变量,类变量,继承,多态的主要内容,如果未能解决你的问题,请参考以下文章

Python类的继承与多态详细介绍

类的相关知识(封装继承多态方法构造方法接口抽象类静态方法静态变量等)

java多态

面向对象相关

Java的多态

第五章.面向对象(上)