Java教程

面向对象03

本文主要是介绍面向对象03,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

面向对象03

精髓思想:

为什么要有面向对象?简单来说就是管理数据。

为什么管理数据?追溯到源头,任何的东西都会有一个"属性"(特征:通常可以用数据来表示)

1)"属性"(特征:通常可以用数据来表示)(类变量和实例变量)

2)可以做一些动作(方法)

为什么要用类?因为任何东西都有以上两种特征

 

类来管理对象的数据。

属性:类变量和实例变量(私有变量)

方法:

          1)实例方法

          2)类方法

          3)静态方法

 

 

面向对象和函数管理数据:

  • 类:

专有数据(可以存储,和对外使用)

和方法(用于操作转悠数据的),实现操作数据的规则。

实现的本质:就是把一组数据放进实例里面去操作管理

  • 函数:

无专有数据,谁给他传值都可以处理,并返回

本身不能存储数据

 

类和函数调用与存储差异:

class compute():

 

    def __init__(self,a,b):

        self.a = a

        self.b = b

 

    def add(self):

        return  self.a+self.b

 

def add(a,b):

    return a+b

函数示例:

print(add(1,2))      #取函数中的方法,临时计算不存储

 

类示例:

c=compute(1,2)    #类中的实例化

print(c.add())  #调用类中的方法

print(c.a)        #调用类中存储的变量a的"值"

print(c.b)       #调用类中存储的变量b的"值"

 

print(c.a+1)   #可以在存储的”值” +1

print(c.a+2)   #可以在存储的”值” +1

 

c.a+=1          #可以改变变量的"值",重新赋一个"值"

c.b+=1

print(c.a)

print(c.b)

 

类:作为一个整体

把一组相关数据放到类的实例里面,进行存储,计算(操作)等:

实现安全性、独立性,规则的操作统一。

方法

"""

1)实例方法

2)类方法

3)静态方法

"""

实例方法:

class Person():

    def __init__(self,name,gender):

        self.name = name

        self.gender = gender

 

    def get_name(self):

        return self.name

 

print(Preson.get_name())

返回

D:\>py b.py

Traceback (most recent call last):

  File "b.py", line 14, in <module>

    print(Person.get_name())

TypeError: get_name() missing 1 required positional argument: 'self'

"""

没有做实例化,只是使用类名调用这个方法get_name,

这个时候用类名调用方法类的所有信息都会存在内存里面,

然后使用类名去找这个方法,肯定能找到,在执行这个方法的时候,

有个参数self(get_name(self)),执行这个方法的时候去找这个self的值,

然后发现这个Preson.get_name()没有self,因为self代表实例的地址,

但是调用这个方法的是类名,不是实例名字,所有方法中的self就找不到

实例的数据,从而无法调用里面的方法

"""

class Person():

    def __init__(self,name,gender):

        self.name = name

        self.gender = gender

 

    def get_name(self):      #实例方法,必须要实例化

        return self.name

第一种写法:

print(Person("wulaoshi","man").get_name())     #连写,只能使用一次

第二种写法:

wulaoshi = Person("wulaoshi","man")        #实例化

print(wulaoshi.get_name())

 

类方法

"""

1)实例方法

2)类方法

3)静态方法

"""

class Person():

    count = 0      #类变量

 

    def __init__(self,name,gender):

        self.name = name

        self.gender = gender

        Person.count +=1

 

    def get_name(self):

        return self.name

 

    def get_isinstance_count(cls): #类方法

        return Person.count

 

#print(Person("wulaoshi","man").get_name())

#wulaoshi = Person("wulaoshi","man")

#print(wulaoshi.get_name())

Person("wulaoshi","man")

print(Person.count)

"""

没有做实例化,只是使用类名调用这个方法get_name,

这个时候用类名调用方法类的所有信息都会存在内存里面,

然后使用类名去找这个方法,肯定能找到,在执行这个方法的时候,

有个参数self(get_name(self)),执行这个方法的时候去找这个self的值,

然后发现这个Preson.get_name()没有self,因为self代表实例的地址,

但是调用这个方法的是类名,不是实例名字,所有方法中的self就找不到

实例的数据,从而无法调用里面的方法

"""

 

这篇关于面向对象03的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!