面向对象全称Object Oriented Progra简称OOP。
面向对象的优点:
可重用性:代码重复使用,减少代码量,提高开发效率。下面介绍的面向对象的三大核心特性(继承、封装和多态)都围绕这个核心。
可扩展性:指新的功能可以很容易地加入到系统中来,便于软件的修改。
可管理性:能够将功能与数据结合,方便管理。
一.类
指具有相同属性和行为的事物的抽象,是一个对象的模板。
二.对象
指客观事实存在的事物和事,是一个类的具体实例。
Java 是面向过程的编程语言,对象就是面向对象程序设计的核心。所谓对象就是真实世界中的实体,对象与实体是一一对应的,也就是说现实世界中每一个实体都是一个对象,它是一种具体的概念。
对象的特点:
对象具有属性和行为。
对象具有变化的状态。
对象具有唯一性。
对象都是某个类别的实例。
一切皆为对象,真实世界中的所有事物都可以视为对象。
面向对象的三大特征:
1.封装
隐藏对象内部细节,只提供有限的访问途径,保护信息。将属性私有化,提供公有的方法访问私有属性。
优点:
保护类中的信息,它可以阻止在外部定义的代码随意访问内部代码和数据。
隐藏细节信息,一些不需要程序员修改和使用的信息,比如取款机中的键盘,用户只需要知道按哪个键实现什么操作就可以,至于它内部是如何运行的,用户不需要知道。
有助于建立各个系统之间的松耦合关系,提高系统的独立性。当一个系统的实现方式发生变化时,只要它的接口不变,就不会影响其他系统的使用。例如 U 盘,不管里面的存储方式怎么改变,只要 U 盘上的 USB 接口不变,就不会影响用户的正常操作。
提高软件的复用率,降低成本。每个系统都是一个相对独立的整体,可以在不同的环境中得到使用。例如,一个 U 盘可以在多台电脑上使用。
例:
2.继承
由一个已存在的类,抽取公共部分,后由这个基类派生除其他子类。子类的对象拥有父类的全部属性与方法,并子类可以重写父类方法(如果没有重写默认调用父类方法),子类亦可以拥有自己的方法,这称作子类对父类的继承。在Java中通过extends来进行继承,且不允许多继承。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或类从父 类继承方法,使得子类具有父类相同的行为。
特点:
java中一个类最多只能有一个直接的父类,即单继承
java中要实现多继承,通过接口来实现
父类中所有属性和方法都能继承给子类;父类中的私有方法不能继承给子类。
共性放到父类,特性放到子类
例
继承中的super与this:
this:代表本类对象的引用
super:代表父类存储空间的标识(可以理解为父类对象引用)
this和super的使用分别
成员变量:
this.成员变量 - 访问本类成员变量
super.成员变量 - 访问父类成员变量
成员方法:
this.成员方法 - 访问本类成员方法
super.成员方法 - 访问父类成员方法
构造方法:
this(…) - 访问本类构造方法
super(…) - 访问父类构造方法
子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化,原因在于,每一个子类构造方法的第一条语句默认都是:super()
方法重写:
存在于有继承关系的不同类中,方法名相同,参数项相同,返回值相同,方法具体实现不同。
Override注解用来检测方法是否被重写
限制:
私有方法不能被重写(父类私有成员子类是不能继承的),
子类方法访问权限不能更低(public > 默认 > 私有)
父类:
子类:
注:方法重载与方法重写不同
3.多态
同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
方法重载:在同一个类中,方法名相同,参数项不同,参数个数,参数类型,参数类型顺序都不同。
多态的优点
1. 消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
构造方法
上面方法重载中就是构造方法,无参数为无参构造,有参数为有参构造。
方法名与类名相同
不需要返回值