面向对象三要素
1.封装
将数据和操作数据的方法绑定起来,对外提供访问方法
2.继承
-定义:子类继承父类,并且子类可以重写父类的方法,让整个系统有了延展性
-原则:单继承,多层继承(儿子,爹,爷)
3.多态性
(1)概念:
同样的对象调用同样的方法,却做了不同的事
(2)分为2类:
编译时的多态性:方法重载
运行时的多态性:方法重写
(3)多态的前提:
要有继承关系
要有方法重写
要有父类引用指向子类
(4)优缺点:
优点:代码扩展性,可维护性,复用性
缺点:不能访问子类的特有方法
抽象
将一类事物(对象)的共同特征总结出来,并不关心起实现细节,
只定义其该有的属性和行为(方法)。
a.概念
用abstract修饰,如果该类中有抽象方法,这个类就可被称为抽象类
b.作用
定义集成体系的共性功能(定义规则),即:
将共性的方法提取出来放在父类,
将特性的方法放在子类.
c.特点
(1)不能实例化
(2)抽象类的子类:要么是抽象类,要么重写父类中抽象方法
(3)有抽象方法的类一定是抽象类,但是抽象类不一定有抽象方法
d.abstract不能和哪些关键字共存
(1)static
static关键字修饰的方法可以用类名.方法名()调用,而abstract修饰的方法没有方法体
,类名.调用 抽象方法时没有意义的
(2)private
abstract是为了让子类强制重写,而private修饰的子类都不能访问
(3)final
abstract是为了让子类强制重写,final修饰的方法是不会让子类修改的
接口
a.概念
对外提供规则(暴露,静态)
b.特点
(1)成员变量只能是常量,并且是静态公共的,
public static final(加static方便调用)
(2)没有构造方法
(3)成员方法只能是抽象方法
(4)接口中所有的东西都是公开的
(5)类可以多实现接口
c.类和接口区别:
(1)成员区别:
接口成员变量只能是常量,方法只能是抽象,没有构造方法
抽象类成员变量可常量可变量,方法可抽象可不抽象,有构造方法
(2)关系区别:
类:单继承,多层继承
接口:可以多继承
类和接口:类可以实现多个接口
(3)设计理念
抽象类:定义继承体系的共性,is a
接口:定义的是继承体系的扩展,like a
面向对象(局部内部类访问局部变量的问题)
1.局部内部类访问局部变量必须要final修饰,AndroidStudio也会提示你
2.why:
局部变量的生命周期和方法一样,方法弹栈后局部变量也会消失;
如果这时候的局部内部类对象还没有马上消失想使用局部变量就没有了;
用final修饰了局部变量,在类加载的时候就会进入常量池,方法弹栈也在
匿名内部类
a.概念
内部类的简写,实质是集成了该类或实现了该接口的子类匿名对象