面向对象思想:
面向过程:
当需要实现一个功能时,每个具体的步骤都要亲力亲为,详细每一个细节。
面向对象:
当需要一个实现功能的时候,不关心具体操作,找一个已经具有该功能的人,来帮我做事。
面向对象的三大特征:封装、继承、多态
封装性体现在Java当中:
1.方法就是一种封装
2.关键字private也是一种封装
**private关键字作用:**将需要保护的成员变量进行修饰(提高安全性)
一旦使用private进行修饰,那么在本类中仍然可以随意访问,但是,超出本类,不可以访问。
间接访问private成员变量,就要定义一对getter/setter方法
getter:不能有参数,返回值类型和成员变量对应
setter:不能有返回值,参数类型和成员变量对应
this关键字用法:
当方法的局部变量和成员变量重名的时候,根据“就近原则”会优先选择局部变量,但如果需要访问本类当中的成员变量,则需要使用this关键字
格式:this.成员变量名();
*注意:通过谁调用的方法,谁就是this
继承性:
特点: 共性抽取
如果在父子类继承关系中,成员变量重名,则创建子类对象时,访问有两种方式;
*直接通过子类对象访问成员变量(等号左边是谁,就有先用谁,没有向上找)
*间接通过成员方法访问成员变量(方法属于谁,就优先用谁,没有想上找)
方法的重写(override):
概念:又称为,方法覆盖,在继承关系中,方法的名称一样,参数列表也一样。
特点:创建子类对象,则优先用子类方法。
注意事项:
1.必须保证父子类间方法的名称一样,参数列表也一样。
@override;:卸载方法的前面,用来检测是否有效的正确覆盖重写
2.子类方法的返回值必须小于父类的返回值范围。
3.子类方法的权限必须大于父类方法的权限修饰符。
扩展:(权限修饰符)public>protected>(default)>private //default不是关键字,而是什么都不写,空。
父子类构造方法上的访问特点:
1.子类构造方法当中默认有一个“super()”调用,所以一定先执行父类方法,再执行子类中的方法。
2.子类构造可以通过super关键字来调用父类重载构造。
3.super的父类构造调用,必须是子类构造方法的第一个语句,一个子类不能多次调用super构造。
super和this关键字的用法
super用于访问父类内容,this用于访问本类中的内容。
注意:
1.this关键字也是构造方法的第一个语句,唯一一个。
2.super和this两种构造方法不可以同时使用。
多态性:一个对象的多种形态。
访问成员变量的两种方式:
1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁。
2.间接通过成员方法访问成员变量:看方法属于谁,优先用谁。
访问成员方法的规则:
看new的是谁,就优先用谁(编译看左边,运行看右边)。
好处:无论右边new的时候换成哪个子类对象,等号左边的调用方法都不会改变。
对象的向上转型,其实就是多态写法(一定是安全的);
对象的向下转型,其实就是一个还原动作,将父类对象,还原成本来的子类对象。
*备注:向上转换类似于基本数据类型的自由转换,向下转换类似于基本数据类型的强制转换。