self、super、封装、继承、多态
self
self用于调用本类中的方法
-
前提: self不能离开类, 离开类之后没有任何意义
-
含义:
- 如果self在对象方法中, 那么self就代表调用当前对象方法的那个对象
- 如果self在类方法中, 那么self就代表调用当前类方法的那个类
-
总结: 只用关注self在哪一个方法中 , 如果在类方法那么就代表当前类, 如果在对象方法那么就代表"当前调用该方法的对象"
-
注意:
- self会自动区分类方法和对象方法, 如果在类方法中使用self调用对象方法, 那么会直接报错
- 不能在对象方法或者类方法中利用self调用当前self所在的方法(会发生死循环)
-
使用场景:
- 可以用于在对象方法之间进行相互调用
- 可以用于在类方法之间进行相互调用
- 可以用于区分成员变量和局部变量同名的情况
super
super用于调用父类中的方法
-
使用方法: 只需要利用super给父类的方法发送一个消息, 那么系统就会自动调用父类的方法
-
使用场景:
- 如果以后想在子类中调用父类的方法可以使用super
- 如果想在给父类方法进行扩展的同时保留父类的方法, 那么可以使用super调用父类同名的方法
-
其他:
- super在类方法中, 一定会调用父类的类方法
- super在对象方法中, 一定会调用父类的对象方法
- 可以利用super在任意方法中调用父类中的方法
封装
-
封装: 屏蔽内部实现的细节, 仅仅对外提供共有的方法/接口(如setter, getter方法)
-
好处: 保证数据的安全性, 将变化隔离
-
规范: 一般情况下不会对外直接暴露成员变量, 都会提供一些共有的方法进行赋值
成员变量都需要封装起来
继承
-
继承: 当B类继承A类, 那么B类就拥有A类所有的属性和方法(类方法/对象方法)
-
优点:
- 提高代码的复用性
- 可以让类与类之间产生关系, 正是因为继承让类与类之间产生了关系所以才有了多态
-
注意: 不要因为继承可以提高代码的复用性,就把含有重复代码的多个类抽取一个父类,
只要满足一定的条件我们才能使用继承. -
条件: XXXX
是
XXX / 某某某is a
某某某 -
缺点: 耦合性太强(依赖性太强, 若删掉父类就会影响子类)
多态
-
多态: 事物的多种表现形态
-
在程序中如何表现: 父类指针指向子类对象
-
优点: 提高了代码的扩展性
-
注意点: 如果父类指针指向子类对象, 如果需要调用子类特有的方法, 必须先强制类型转换为子类才能调用
网友评论