oop(面向对象)
核心:
***类是一种复杂的数据类型,需要实例化后才能用
一、封装
a.将某些基础数据类型/引用类型的变量/方法,构成一种复杂 的自定义的数据类型
b.将该自定义数据类型里面的变量和方法有意识的公开或私有化
二、继承(单继承)
a.继承是为多态服务的
b.只能有一个直接父类,可以有多个间接父类
c.子类可以重写父类中方法名相同的方法
d.this表示本类,super表示父类
e.实现数据兼容---父类的引用可以指向子类对象实例(内存空间)
三、多态
a.引用转型---当父类引用指向子类实例时,调用子类中重写父类的方法,此时,调用的是父类中不存在,但在子类中重写的方法。(实现多态必须是父类中有的方法且被子类重写)
访问权限
一.类的成员方法与成员属性的访问权限
A.public:只要用public修饰后的成员方法与属性都可以任意被访问
B.private:被修饰为private的成员方法与属性只能类的内部调用,外部不能访问
C.protected:同一个包内或有继承(父子类)关系,只要被修饰 为protected的成员方法和属性都可以被调用
D.缺省(不等于没有修饰):同一个包中的成员属性与方法可以 访问,但继承关系不能访问。
***1.尽量为每个成员方法和属性加上访问权限,(不加访问权限,不是一个好习惯)
2.如果不知道怎么定义访问权限,最简单的做法是——成员属性私有化,成员方法公开化 (成员属性私有化,能够最大程度避免数据被误操作,若想访问成员属性,则可以提供公有化的访问器(getter)与设置器(setter),达到间接操作和获得成员属性)
二.类本身的访问权限
一句话##一个关键字,两种访问权限
A.public:被修饰为可以跨包被访问
B.缺省:缺省的包只能被当前包的类访问
三.继承中的访问权限
A.public:可以子类继承下来父类被public修饰的成员方法与属 性
B.Private:子类不能使用父类被private修饰的成员方法与属性
C.Protected:子类可以使用父类被protected修饰的成员方法 与属性
D.缺省:不支持继承关系,因此子类不能使用父类中缺省的成员方法与属性
方法重载与重写
一、方法重载的条件
a.在同一作用区域(同一类--继承下来的方法如果在子类中与 父类方法同名但参数不同也能构成重载)
b.方法名相同
c.参数数量不同,参数的类型不同,参数的属性不同呢
d.方法的返回值不同不能构成重载。
e.重载的意义在于让可以实现同一功能但由于参数个数或类型的不同需要重新写一个方法用于适应另外一种情况
二、方法重写
a.方法原型一样(返回值类型,参数个数,参数类型,参数顺 序要一样)
b.通常用与父子类关系中(接口和抽象类),子类有自己一套 方法时才需要重写方法
抽象类与接口
a.抽象类
1.只要有一个抽象方法的类
2.不能实例化
3.可以声明引用,指向子类实例
4.抽象类的用途是用来提供子类
b.接口
1.里面全部都是抽象方法
2.不能实例化,可以有引用
3.接口的意义是利用接口定义实现类(为类定义一个标准)
static
a.静态的成员,意味着,所有类的实例化对象共同使用这个成员
b.main方法定义为静态是为了,打开接口,让每个类都可以去访 问
c.静态成员可以在实例化前使用
d.静态成员不能直接访问非静态成员
e.static关键字不要滥用
final
a.修饰属性后就变成常量,常量变量名通常要大写
b.修饰方法后,则该方法被继承后不能被重写
c.修饰类后,该类不能被继承