重写重载 & 继承 & 封装
2016-03-21 16:03
363 查看
重写重载 & 继承 & 封装
重写, 重载
什么是 重写/覆盖: 当子类出现和父类一模一样的函数时, 当子类对象调用该函数,会运行子类函数的内容。 如同父类的函数被覆盖一样。 当子类继承父类,沿袭了父类的功能,到子类中, 但是子类虽具备该功能,但是功能的内容却和父类不一致, 这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。 重写/覆盖 的条件: 1,子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。 2,静态只能覆盖静态。 重写/覆盖 和 重载的区别: 重载:只看同名函数的参数列表。 重写:子父类方法要一模一样。
继承
继承的好处: 提高了代码的复用性。 java只支持单继承多实现: 因为多继承容易带来安全隐患: 当多个父类中定义了相同功能, 当功能内容不同时, 子类对象不确定要运行哪一个。 继承的特点: 1,变量。 当子父类中定义了相同的名称的成员变量,子类要使用父类中的同名变量时,需要使用关键字super来区分。 一般不会出现这种情况,因为父类中有了,子类不需要定义。而且父类定义时,一般变量都私有化。 2,函数。 子类可以直接访问父类中非私有的成员函数。 特殊情况:当子类中定义了与父类一模一样的方法时,会发生覆盖操作。大多指的是非静态方法。 最终会运行子类的方法,父类相当于被覆盖了。 函数的另一个特性:覆盖(重写,复写)。 什么时候用啊? 当父类的功能要被修改时,不建议修改源码。因为是灾难。 只要通过一个类继承原有类,定义一个新的升级后的功能即可。 但是功能是相同的,只是实现方法改变。这是子类可以沿袭父类中的功能定义, 并重写功能内容。这就是覆盖。 覆盖很爽,但是有注意事项: 1,子类覆盖父类时,必须权限要大于等于父类权限。 2,静态不能覆盖非静态。 3,构造函数。 构造函数可以给本类进行对象初始化,也可以给子类对象进行初始化。 子类对象初始化过程: 子类中的所有构造方法都会访问父类中空参数的构造函数, 因为每一个构造函数的第一行,都有一句隐式的super语句。 为什么要有这条语句? 因为子类会获取到父类中的数据,必须要先明确父类对数据的初始化过程。 当父类中没有空参数构造函数时,子类构造函数必须通过super句来明确要访问的父类中指定的构造函数。 抽象Abstract 特点: 1, 抽象方法一定在抽象类中。 2, 抽象方法和抽象类都必须被abstract关键字修饰。 3, 抽象类不可以用new创建对象。因为调用抽象方法没意义。 4, 抽象类中的抽象方法要被使用,必须由子类复写起所有的抽象方法后,建立子类对象调用。 如果子类只覆盖了部分抽象方法,那么该子类还是一个抽象类。 5, abstract关键字和final,private关键字不能共存 接口Interface 接口看上去是一个特殊的抽象类。里面存的都是抽象方法。 接口中常见成员:常量,抽象方法, 而且这些成员都有固定的修饰符。 常量:public static final 方法:public abstract
封装
封装就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用。 也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。 好处:实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要的时候调用,从而实现了专业的分工。
相关文章推荐
- CountDownLatch用法
- 第二章 第三节 使用HADOOP分析数据
- UVA 10870(p155)----Recurrences
- jquery require.js AMD
- Django 学习
- 第三周作业 作业1
- 【c++】计算工资
- HDU 1024 Max Sum Plus Plus
- [LeetCode]题解(python):120-Triangle
- CoreData的使用
- [Unity] 使用Profiler.BeginSample()定位性能热点
- UVA 1160——X-Plosives
- Spring mvc 数据绑定及返回数据
- iOS 栈和堆的区别
- ListView + EditText
- 多态
- iOS 自定义UITableViewCell上添加UIButton按钮如何确定点击了哪一行,代码块实现
- 2016.3.16高项作业
- mysql 将查询结果拼接输出到本地文件
- 选IT不再让我迷茫