今天突发奇想的想把脑子里的面向对象整理一下,纯属随手一记。如果有误请多加指导。
面向对象思想: 万物皆对象。
举个例子:我想吃大盘鸡。
面向过程:a,自己去买菜,买鸡。b,自己处理菜,鸡。c,自己做菜。d,自己吃
面向对象:a,让一个人去买菜。b,一个人处理菜,鸡。c,让人做菜。d,自己吃
一:封装
把本类特有的属性私有,外部想访问只能通过我提供的特有方法。
优点:隐藏信息。
关键字:private(只修饰变量和方法,不修饰类)
二:继承
有两个以上的类具有相同的属性及方法,此时就可以将其进行提取成一个类出来。提取出来的这个类就是父类。通过继承可以直接使用其非私有的方法及属性。
总结:a, java只支持单继承。b, 构造方法不被继承(构造方法是特有的,实例化对象的时候需要使用)。c,子类在实例的时候会先访问父类的构造方法。
方法重写:除了修饰词(子类方法的修饰符访问权限必须小于或等于子类方法的访问修饰符)及返回值(子类方法返回值必须与父类相同或者父类返回值得子类)之外其余都相同。
优点:提高代码复用性。
关键字:extends继承
三:多态
一种事物的多种表现形式。
体现:方法的重写及重载,向上转型,向下转型。
a,向上转型:子类类型转为父类:Fu fu = new Zi(); 不能再访问子类特有的方法或者属性。
b,向下转型:父类类型转为子类:Zi zi = (Zi)fu;
总结:
a,使用多态之后访问成员变量时:都会访问父类的成员变量(编译看左边,运行看左边)
b,使用多态之后调用方法时:子类重写父类的方法时调用的都是子类,没有重写调用父类(编译看左边,运行看右边)
c,使用多态之后访问静态时:都会访问父类的(编译看左边,运行看左边)
优点:提高代码可维护性及可扩展性,简化代码。
弊端:不能访问子类中特有的方法及属性。
五:拓展
1:this:表示当前对象的引用。
2:super:表示父类对象的引用。
3:static:被其修饰的方法或变量都属于类,可以用类名直接调用。
4:final:最终修饰符。
a,修饰类:不能被继承。
b,修饰方法:不能被重写。
c,修饰变量:不能再改变。
5: 访问权限修饰符:public>protected>default(默认)>private
a,public:可以被子类,本类,同包,不同包使用。
b,protected:可以被子类,本类,同包使用。
c,default:本类,本包使用。
d,private:本类使用。
注意:类只能被public和default修饰
6:instanceof:判断某个对象是否是指定的类型(语法:对象 instanceof 类型 结果是boolean)
注意:instanceof只能使用在引用数据类型中