目录
私有属性和私有方法
01.应用场景及定义方式
02.伪私有属性和私有方法
继承
1.1继承的概念、语法和特点
1.继承的语法:
2.专业术语:
3.继承的传递性
1.2方法的重写
1.覆盖父类的方法
2.对父类方法进行扩展
关于super
1.3 父类的私有属性和私有方法
多继承
2.1多继承的使用注意事项
私有属性和私有方法
01.应用场景及定义方式
应用场景:
1.在实际开发中,对象的某些属性或方法可能只希望在对象的内部被使用。而不希望在外部被访问到。
2.私有属性就是对象不希望公开的属性。
3.私有方法就是对象不希望公开的方法。
定义方法:
在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法。
02.伪私有属性和私有方法
1.在给属性,方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到。
2.处理方式:在名称前加上_类名 => _类名_名称。
ps:在日常开发中,不要使用这种方式,访问对象的私有属性或私有方法。
继承
继承分为单继承和多继承
面向对象的三大特性:
1.封装根据职责将属性和方法封装到一个抽象的类中。
2.继承实现代码的重用,相同的代码不需要重复的编写。
3.多态不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度。
1.1继承的概念、语法和特点
继承的概念:子类拥有父类的所有方法和属性。
1.继承的语法:
1.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。
2.子类中应该根据职责,封装子类特有的属性和方法。
2.专业术语:
1.Dog类是Animal类的子类,Animal类是Dog类的父类,Dog类从Animal类继承。
2.Dog类是Animal类的派生类,Animal类是Dog类的基类,Dog类从Animal类派生。
3.继承的传递性
1.C类从B类继承,B类又从A类继承。
2.那么C类具有B类和A类的所有属性和方法。
子类有用父类以及父类的父类中封装的所有属性和方法。
1.2方法的重写
1.子类拥有父类的所有方法和属性。
2.子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。
应用场景:当父类的方法实现不能满足于子类需求时,可以对方法进行重写。
重写父类方法有两种情况:
1.覆盖父类的方法。
2.对父类方法进行扩展。
1.覆盖父类的方法
如果在开发中,父类的方法实现和子类的方法实现完全不同,就可以使用覆盖的方式,在子类中重新编写父类的方法实现。
具体的实现方式就相当于在子类中定义了一个和父类同名的方法并且实现。
重写之后,在运行时,只会调用子类中重写的方法,而不再会调用父类封装的方法。
2.对父类方法进行扩展
如果在开发中,子类的方法实现中包含父类的方法实现(父类原本封装的方法实现是子类方法的一部分)
就可以使用扩展的方式:
1.在子类中重写父类的方法。
2.在学要的位置使用super().父类方法来调用父类方法的执行。
3.代码其他的位置针对子类的需求,编写子类特有的代码实现。
关于super
1.在python中super是一个特殊的类。
2.super()就是使用super类创建出来的对象。
3.最常使用的场景就是在重写父类方法时,调用在父类中封装的方法实现。
1.在开发时,父类名和super()两种方式不要混用。
2.如果使用当前子类名调用方法,会形成递归调用,出现死循环。
1.3 父类的私有属性和私有方法
1.子类对象不能在自己的方法内部、直接访问父类的私有属性或私有方法。
2.子类对象可以通过父类的公有方法间接访问到私有属性或私有方法。
私有属性、方法时对象的隐私,不对外公开,外界以及子类都不能直接访问。
私有属性、方法通常用于做一些内部的事情。
1.B的对象不能直接访问_num2属性
2.B的对象不能在demo方法内访问_num2属性
3.B的对象可以在demo方法内,调用父类的test方法
4.父类的test方法内部,能够访问_num2属性和_test方法
多继承
子类可以拥有多个父类,并且具有所有父类的属性和方法。
例如:孩子会继承自己父类和母类的特性。
2.1多继承的使用注意事项
提示:开发时,应该尽量避免这种容易产生混淆的情况!——如果父类之间存在同名的属性或者方法,应该尽量避免使用多继承。