说到面向对象就要先说下向像对象和面向过程的区别:
举个例子:想要从寝室去几十公里外的图书馆看书
面向对象:实现一个功能,不关心具体的实现步骤,只关心结果,找一个具有该功能的类,帮我们做事。
例:从寝室出发—>打滴滴出租车—>告诉司机终点—>到达
面向对象:强调步骤
面向过程:的那个要实现一个功能,需要亲力亲为,处理每一个细节
例:从寝室出发—>看地图确认方向路径—>找合适的路径去,坐公交—>下车—>转公交—>到站下公交—>步行到达
面向过程:强调对象,这里的对象就是滴滴出租车
Java语言有三大特性:封装、继承、多态。
封装:主要是将类中的部分代码实现细节隐藏、封装起来,不直接对外提供访问;
继承:在多态中必须存在有继承关系的子类和父类。
多态:同一行为,有多个不同表现形式
封装的概述
封装的基本使用:1.使用private关键字来修饰类的成员(成员变量和成员方法)以及类
2.需要使用封装的成员变量,只能通过对应的getxxx方法和setxxx方法(get获取,set设置)
3. private修饰的成员方法,只允许本类的方法条用;
4. private修饰的类,只能作为内部类使用
private是一个权限修饰符,代表最小权限(其他权限修饰符包括public(公开的)、protected(保护的)、default(默认)、 private),只能在同一个类下访问。
继承的概述
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的
如:
父类——father
public class father{
。。。
}
继承父类(father)的子类(son )
public class son extends father{
}
继承的好处:
提高代码的复用性。
类与类之间产生了关系,是多态的前提
继承后的特点:
子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键 字,修饰父类成员变量,类似于之前学过的 this 。
1、成员方法不重名
如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。
调用方法时,先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。
2、成员方法重名
如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,并且分为两种情况。
如果子类出现与父类重名方法,但是方法参数不同,这种情况属于方法重载;
如果子类出现与父类重名方法,同时方法参数也相同,这种情况叫做方法重写Override。
方法重写 :子类中出现与父类一模一样的方法时(方法名和参数列表都相同,重写的返回值类型相同或者是父类方法的子类),会出现覆盖效果,也称为重写或者复写。
注意事项: 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。 子类方法覆盖父类方法,方法名和参数列表都要一模一样。 子类方法覆盖父类方法,返回值类型可以与父类保持一致,或者返回父类返回值的子类。 私有方法不是不能继承,而是无法访问,所以不能重写。
抽象类:由抽象方法的类一定是抽象类,但抽象类不一定有抽象方法
多态:下一篇