面向对象

面向对象思想:

面向对象思想:
当需求单一,一步一步去操作没问题,但随着功能增多,发现面对每一个步骤很麻烦,这时思索着将这些步骤和功能进行封装到一个类中,功能类似的就封装在一起(如工具类),这样结构就清晰了很多。使用时,找到对应的类,对类进行管理编程(对象调方法),这就是面向对象思想。

思想特点:
①是一种更符合我们的思想习惯的思想
②将复杂事情简单化
③将我们从执行者变成指挥者
举例:洗衣服
面向过程: 衣服脱下–装桶上–放洗衣粉–加水-- 搓衣服 – 清洗 – 拧干-- 晾衣服
面向对象:衣服脱下 – 打开全自动洗衣机 – 扔进去 – 一键即可 – 晾衣服

封装

  1. 隐藏实现细节,对外提供公共的访问方式
  2. 好处:
    ①隐藏实现细节,对外提供公共的访问方式
    ②复用性(工具类)
    ③安全性(私有化成员变量,使用setXXX(),getXXX())

继承

把多个类中相同的成员提取到定义到一个独立的类中,然后让这多个类与这个独立类产生一个关系,这多个类就具备这些内容,这个关系叫做继承。

优点
① 复用性(直接使用继承自父类的成员)
②维护性(只修改父类,就可以达到影响子类效果)
③是多态的前提
缺点
①耦合度增加(子类中耦合了多个类,修改父类,就会影响子类)
②打破了封装性(方法重写,访问权限发生改变)
java 中继承的特点
① Java中类只支持单继承,接口支持多继承
② 支持多层继承(继承体系)

多态

同一个对象体现不同的表现形式

多态前提:
①有继承或实现关系
②要有方法的重写(不同的表现形式就是通过重写体现)
③要有父类或父接口引用指向子类对象

多态分为编译时多态和运行时多态

① 编译时多态是指编译器编译期间,根据同一对象或者类中相同名称方法的参数列表的不同(函数签名不同),来决定调用那个方法的多态行为。也就是 指的是java中的方法重载。
② 运行时多态是指程序运行期间,同一方法会根据调用对象的类型不同,分别去执行其实际的类型的相应方法。一般多发生在方法覆盖的情况下。
③ 动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法

多态中成员访问特点

① 成员变量: 编译看左边,运行看左边
② 成员方法: 编译看左边,运行看右边
③ 静态成员方法: 编译看左边,运行看左边
(多态的体现是通过方法重写的,静态方法的重写不属于方法重写,所以静态方法运行看左边)

多态优点

① 提高代码的维护性(继承体现–修改父类可以影响子类)
② 提高代码的扩展性(多态体现–方法重写)

多态缺点
① 不能使用子类的特有功能

抽象类

引入原因:
① 试想有一个动物类 Animal,如果可以对Animal创建对象,这是不合理的,因为你说动物,我并不知道你说的是什么动物,只有看到了具体的动物,你才知道这是什么动物。所以Animal 是一种抽象,并不是具体的事物。
同理,Animal有一个 eat() 行为,如果eat()表现为吃草,不合理,因为不是所有的动物都吃草,表现为吃鱼也不合理,因为不是所有的动物都吃鱼,明显Animal中不能确定eat()具体行为,所以eat()是抽象行为.
在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

接口

引入原因:驯养员训练狗跳高,使这只狗成为跳高狗,这个跳高功能并不是所有狗都具备的,属于跳高狗的特殊功能,所以这些额外的功能定义到狗中是不合理的,为了体现跳高狗具有跳高这种拓展功能,java中就提供了接口来定义这些额外的功能,并不给出具体实现。

你可能感兴趣的:(jave基础)