IT第十九天 - 继承、接口、多态、面向对象的编程思想
IT第十九天 |
||
上午 |
继承 |
1.一般情况下,子类在继承父类时,会调用父类中的无参构造方法,即默认的构造方法;如果在父类中只写了有参的构造方法,这时如果在子类中继承时,就会出现报错,原因是子类继承父类时无法传入参数给父类来“实例化”父类,此时解决办法有: (1)同时在父类中加入一个无参的构造方法,但这样可能会限制子类继承父类时的参数传递 (2)在子类中也增加构造方法,并在构造方法中,使用super()对父类中的构造方法进行传参,帮助实例化,这样既可以调用无参构造方法“实例化”父类,也可以调用有参构造方法“实例化”父类,super必须写在第一行,因为必须先实例化父类,才能实例化子类,继而执行子类中的代码 2.super()是父类的一个实例对象 3.父类中protected修饰的属性,在异包的子类中可以访问,但是默认的修饰符protected修饰的属性不可以访问;而实例化子类的类如果不和父类在同包中,也无法访问protected显示修饰的属性 |
多态 |
1.多态就是根据方法的需要,父类可以使用不同的子类的实例进行不同的操作 2.反射的作用,反射可以读取实例化的类的类信息,如:instanceof可以获取实例的数据类型 3.父类是调用不到子类实例新增的方法和属性,但是重写父类的方法可以调用,因此在使用多态时,为了实现具体的功能,需要在子类中对父类的方法进行重写,重写可能会引用到的方法,而不是在子类中新增方法进行功能的实现; 4.类中的所有属性和方法都是对象,是“引用数据类型”,因此在父类调用子类的实例的方法时,是类似指针的依父类中的方法进行到子类中匹配,如果父类中没有该方法,那父类中也就不会有相应的指针去指向子类中的新方法 |
|
下午 |
多态 |
1.异常ClassCastException:类型转换异常,在使用强制转换进行子类实例化父类,并进行强制转换父类成子类时,可能工具不会报错,但是在运行时会报错ClassCastException,这时由于子类中的属性或方法可能在父类中没有,因此可能造成“指针在父类中找不到对应的属性或方法 2.综上,子类不能接受父类的实例” |
再谈装箱、拆箱 |
1.父类实例化子类时,就是一次装箱的过程,因为子类要比父类更具体,当使用父类new子类时,就是将更具体的变得模糊 2.拆箱是将父类实例化子类的变量强制转换成该子类或父类(父类是父类的父类) |
|
接口 |
1.类可以实现多个接口,接口可以继承接口,类在实现子接口的同时,也就相当于同时实现了父接口,因此可以用父接口去实例化该类 2.接口就是为多态服务的,包括继承、重载也是为多态服务,多态又是面向对象的编程思想的基础 |
|
晚上 |
||
笔记 |
1.在类的继承中,super()的使用 2.默认修饰符与protected对于父类中的属性的控制 3.父类可以实例化子类,但是子类不可以实例化父类,可能会导致ClassCastException报错 4.父类在实例化子类时的原理,即:根据子类中的方法和属性指针到子类中的方法,因此,子类中新增的方法或属性,父类实例化的子类是访问不到的 5.关于父类实例化子类的理解,即:装箱、拆箱的操作,父类实例化子类是对子类实例的引用,而在进行强制转换成子类时,也是对子类实例引用的强制转换 6.接口可以继承接口,一个类可以实现多个接口,一个类在继承父类的情况下,也可以继续实现多个接口,继承在前 7.接口中的方法是抽象方法,并且不能带有方法体,接口中的属性是静态的、final类型的属性,即:常驻内存并且一经声明、赋值就不可改变的定值 8.接口和继承就是为多态所做的服务,多态也是面向对象的编程思想的基础 |
IT第十九天 - 继承、接口、多态、面向对象的编程思想的更多相关文章
- (C/C++学习笔记) 十八. 继承和多态
十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...
- OC:面向对象的编程思想、基本的知识点总结、强,弱引用
OC 面向对象 和 面向过程 参考 面向过程:使用步骤划分功能,然后用函数一步一步的调用 面向对象:OOP (Object Oriented Programming) 使用功能来简化问题, 面向对象语 ...
- 面向对象的编程思想和Java中类的概念与设计
面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别 Java中类的概念与设计 ...
- C++面向对象的编程思想机器人
C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...
- JS高级---面向对象的编程思想(贪吃蛇梳理)
面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...
- Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现
前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...
- Delphi面向对象的编程思想
第一章.建立面向对象的新思维 1.1.1历史背景 目前对象技术的前沿课题包括设计模式.分布式对象系统.和基于网络的对象应用等 目前面向对象的语言包含4个基本的分支: 1.基于Smalltalk的:包括 ...
- Python基础之面向对象:1、面向对象及编程思想
一.人狗大战 1.需求 用代码模拟人.狗打架的小游戏 人和狗种类不同,因此双方的属性各不相同 推导一: 人和狗各有不同属性 使用字典方式储存属性较为方便,并可储存多种属性 # 1.在字典内储存'人'属 ...
- java 面对对象(抽象 继承 接口 多态)
什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...
随机推荐
- pojAGTC(LCS,DP)
题目链接: 啊哈哈,点我点我 题意:给两个字符串,找出经过多少个操作能够使得两个串相等.. 思路:找出两个串的最长公共子序列,然后用最大的串的长度减去最长公共子序列的长度得到的就是须要的操作数.. 题 ...
- tomcat 7 无法打开管理页面
在配置文件tomcat-users.xml中添加如下内容即可. <role rolename="admin"/> <role rolename="man ...
- ReportViewer动态加载数据源
ReportViewer主要用于打印和导出数据到pdf或excel,接下来将简单做一张Northwind的Products表的统计报表. (最终图) 一.新建一张报表 二.添加数据集 添加xsd文件后 ...
- JavaScriptCore.framework基本用法(二)
接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用方法 首先我们看第一种,直接调用方法. 其中用到了iOS的bl ...
- JavaSE学习总结第26天_网络编程
26.01 网络编程概述 网络编程:就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 26.02 网络模型概述和图解 计算机网络之间以何种规则进行通信,就是网络模型研究问题. ...
- String VS Cstring(字符串)
#include<string> 与 #include<string.h> 这是两个完全不同的头文件,前者用于C++,后者用于C,一般把这两个头文件都包括进去. 越来越觉得需要 ...
- 2768: [JLOI2010]冠军调查( 最小割 )
最小割... 怎么乱搞都可以 -------------------------------------------------------------------------------- #inc ...
- Linux 下的 fork()【转载】
[原文地址]http://blog.csdn.net/hikaliv/article/details/4276758 [cpp] view plaincopy for( i = 0; i < ...
- 循环-10. 求序列前N项和(15)
#include<iostream>#include<iomanip>using namespace std;int main(){ double i,n,t,a,b; ...
- (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单
原文 (C#)Windows Shell 编程系列3 - 上下文菜单(iContextMenu)(一)右键菜单 接上一节:(C#)Windows Shell 编程系列2 - 解释,从“桌面”开始展开这 ...