首页 > 编程知识 正文

java实例化对象过程,面向对象三大特性的特点

时间:2023-05-04 08:36:38 阅读:116523 作者:76

封装:1.封装是面向对象编程的一大特点。 2 .面向对象编程的第一步是将属性和方法封装在抽象的类中。 (抽象是因为类不能直接使用。 )3.从外部使用类创建对象,然后单击、 请对方调用方法4 .对象方法的详细情况被班级的内部需求封住了1.wxdjzg体重75.0公斤2 .每次跑步0.5公斤3体重增加1公斤4 .爱玩的电话体重45.0公斤class person : def name ) weight(3360 )向初始化方法添加两个参数并从外部传递值) #self .属性=形参self.name=nameself.weight=weight def _ _ str _ (sell ) )在对象内部,可以直接访问对象属性print '%s”爱好跑步的(“% self.nameself.weight-=0.5 defeat ) self ) ) :打印“% s”

情况2 )摆放家具的需求)1)房子有户型,总面积和家具名称列表新家没有什么家具)2)家具有名字和占地面积,其中床%4平米衣柜%2平面餐桌%1.5平米3%以上3件家具添加到房子) 4 家具名称列表中使用的类首先是class furniture : def _ init _ (self,name, area ) : self.name=nameself.area=area def _ _ starea * args (3360 return ([ % s ]占地面积((2f ) ) self.name,) area ) : self.house _ type=house _ type self.area=area self.free _ area=area self.item _ list=[ ] def _ () n总面积: %.2f[其余: %.2f]n家具: %s'%(self.house_type,self.area,self.free_area, self.item_lission item ) : if self.free _ area item.area : print ' % s的面积过大, ' % item.namereturnself.item _ list.append (item.name ) self.free _ area-=item.area bed=furniture ) ' bebeer print chest # printtablemy _ house=house ) 2室1厅),60 ) my_housse

需求:1.战士lmdgtx有AK472。 士兵可以开枪(士兵开枪扣动扳机是扳机)3.枪可以发射子弹)4.枪可以装填子弹---增加子弹数量classgun:def__init__ ) Self,model 请参阅。 % self.modelreturnelse : self.bullet _ count-=1print ' [ % s ] tutu,[%d]' %(self.model,self.bubutu

'没有枪' return print 'go' self.gun.add_bullet(50) self.gun.shoot()ak47=Gun('AK47')ryan = Soldier('Ryan')ryan.gun = ak47ryan.fire()print ryan.gun

私有属性和私有方法应用场景及定义方式应用场景 在实际开发中,对象的某些属性或方法可能只希望在对象的内部使用,而不希望在外部被访问到 私有属性 就是 对象 不希望公开的 属性 私有方法 就是 方法 不希望公开的 方法定义方法 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法 class Women: def __init__(self,name): self.name = name self.__age = 18 def __secret(self): print '%s 的年龄是 %d' %(self.name,self.__age)hdsdwbl = Women('hdsdwbl')print hdsdwbl.name# 私有属性,外界不能直接访问#print hdsdwbl.age# 私有方法,外界不能直接调用hdsdwbl.secret()

面向对象的特征 1.封装:根据职责将属性和方法封装到一个抽象的类中 2.继承:实现代码的重用,相同代码不需要重复的写 3.多态:(以封装和继承为基础)不同的子类对象调用相同的方法产生不同的结果单继承继承:子类拥有父类的所有属性和方法class 类名(父类): def 子类特有方法子类也叫派生类父类也叫基类 class Animal(object): def eat(self): print '吃' def drink(self): print '喝' def run(self): print '跑' def sleep(self): print '睡'class Cat(Animal): #子类拥有父类的所有属性和方法 def call(self): print '喵喵'class Dog(Animal): def bark(self): print '汪汪'class Hellokitty(Cat): def speak(self): print '我可以说日语'#创建一个猫对象,继承Animal的所有属性和方法害怕的小蝴蝶 = Cat()害怕的小蝴蝶.call()#创建一个狗对象,继承Animal的所有属性和方法gou = Dog()gou.run()gou.bark()#创建一个hellokitty对象,继承Cat的所有属性和方法"""继承的传递性:(爷爷 父亲 儿子)1.c类从b类继承,b类又从a类继承2.那么c类就具有b类和a类的所有属性和方法子类拥有父亲以及父类的父类中的封装的所有属性和方法"""kt=Hellokitty()kt.speak()kt.run()kt.call()#子类继承自父类,可以直接享受父类中已经封装好的方法#子类中应该根据自己的职责,封装子类特有的属性和方法

重写父类方法: 1.覆盖父类的方法 2.扩展父类的方法 class Animal: def eat(self): print '吃' def drink(self): print '喝' def run(self): print '跑'class Cat(Animal): #子类拥有父类的所有方法和属性 def call(self): print '喵喵'class Hellokitty(Cat): def speak(self): print '我可以说日语' def call(self): #针对子类特有的需求,编写代码 print '你好' #调用原本在父类中封装的代码 Cat.call(self) #增加其他的子类的代码 print '####'kt = Hellokitty()#如果子类中,重写了父类的方法#在运行中,只会调用子类中重写的父类的方法而不会调用父类的方法kt.call()

注意init方法也可以被覆盖所以要就加上

Bird.__init__(self) class Bird: def __init__(self): self.hungry = True def eat(self): if self.hungry: print '吃....' self.hungry = False else: print 'No thants'class SongBird(Bird): def __init__(self): Bird.__init__(self) self.sound = 'Squawk!' def sing(self): print self.soundlittlebird = SongBird()littlebird.eat()littlebird.sing()

多继承的顺序

class C(A,B)  继承A(如果A,B的方法名称一样) class C(B,A)继承B(如果A,B的方法名称一样) 类的私有属性和私有方法 1.子类对象不能在自动的方法内部,直接访问对象的私有属性和私有方法 2.子类对象可以通过父类的公有方法直接访问到私有属性和私有u方法私有属性,私有方法,私有方法是对象的隐私,不对外公开,外界以及子类都不能直接访问私有属性,私有方法常用做一些内部的事情 class A: def __init__(self): self.num1 = 100 self.__num2 = 200 def __test(self): print '私有方法 %d %d' % (self.num1, self.__num2) def test(self): print '父类的共有方法 %d' % self.__num2 self.__test()class B(A): def demo(self): # 在子类的对象方法中,不能访问父类的私有属性 # # print '访问父类的私有属性 %d '%self.__num2 # 在子类对象的方法中,不能调用父类的私有方法 # # self.__test() self.test()b = B()b.demo()# 在外界不能直接访问对象的私有属性/调用私有方法print b.__num2b.__test()

多态 3.多态:(以封装和继承为基础)不同的子类对象调用相同的方法产生不同的结果比如人类由一个方法:work(self):程序员 设计师调用这个相同的方法得到不同的结果 class Dog(object): def __init__(self, name): self.name = name def play(self): print '%s 玩皮球' % self.nameclass Xiaotiandog(Dog): #父类方法不能满足子类方法,重写play方法 def play(self): #在使用继承时,子类拥有父类的所有属性和方法 print '%s 飞到天上' % self.nameclass Person(object): def __init__(self, name): self.name = name def play_with_dog(self,dog): print '%s 和 %s 玩得很开心' %(self.name,dog.name) dog.play()#1.创建一个狗对象# wangcai = Dog('旺财')wangcai = Xiaotiandog('旺财')#2.创建一个wxdjzg对象(wxdjzg是一个人)xiaoming =Person('wxdjzg')#3.让wxdjzg调用和狗玩的方法(把之前创建的狗对象传递出去)xiaoming.play_with_dog(wangcai)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。