一.java三大特性:
(1)封装
(2)继承
(3)多态
二.什么是封装
将类的细节隐藏起来,仅仅对外界提供访问的接口,提高了代码的安全性。
三.什么是继承
1.继承是类与类之间的关系,其关键字为extends。
2.继承的特点:
(1)子类可以继承父类非私有化的属性和方法
(2)在java中只支持单继承,但可以多层继承
(3)创建子类时,会直接调用父类的构造函数
3.继承的优缺点:
优点:提高了代码的复用率,提高了代码的可维护性,加强了类与类之间的关系,为多态提供了前提。
缺点:类与类之间产生依赖,破坏了封装性,不符合代码编写原则(高内聚,低耦合)
补充:内聚又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
耦合:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。
四.什么是多态
1.在不同时期展现的多种形态
2..多态的前提:继承,方法重写,父类的引用指向子类的实例。
3.多态成员的特点:
时期 | 编译时期 | 运行时期 |
成员变量 | 只具有父类的成员变量 | 只具有父类的成员变量 |
构造方法 | / | 创建子类时会调用父类的构造函数,对父类进行初始化 |
成员方法 | 只具有父类的成员方法 | 运行结果以子类的方法为准(子类已重写父类的方法) |
静态变量/方法 | 只具有父类的静态变量/方法 | 运行结果以父类为准 |
4.多态的转型
(1)向上转型:子类向上转型为父类
(2) 向下转型:把原本多态创建的父类引用转型为原本子类的引用。
Father child=new Child(); Child c=(Child)child;
5.优缺点
(1)优点:提高了代码的课拓展性
方法的形参可以设置成父亲类型,这样一来,不管有多少子类都可以填进去
运用在抽象类和接口创造实例
(2)缺点:不能使用子类特有的方法
五.抽象类与接口的区别
1.成员
抽象类 | 接口 | |
成员变量 | 可以是变量也可以常量 |
默认被public static finall修饰 只能是常量 |
构造函数 | 有构造函数,但不能被实例化 | 没有构造函数 |
成员方法 | 可以是抽象方法,也可以是普通方法,但有抽象方法的一定是抽象类 | 默认被public abstract修饰只能是抽象方法 |
2.关系
(1)类与类之间只能是继承,而且只能是单继承,但可以多层继承
(2)类与接口之间是实现关系一个类可以实现多个接口,实现与继承不冲突
(3)接口与接口之间可以继承,但不能实现
3.思想
类是本身具有的属性与特征
接口是扩展的功能