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 面对对象(抽象 继承 接口 多态)
什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...
随机推荐
- java面试核心基础(1)
1.以下代码的执行结果 String s1 = "helloworld"; String s2 = "hello" + new Stirng("wor ...
- POJ 2142:The Balance_扩展欧几里得(多组解)
先做出两个函数的图像,然后求|x|+|y|的最小值.|x|+|y|=|x0+b/d *t |+|y0-a/d *t| 这个关于t的函数的最小值应该在t零点附近(在斜率大的那条折线的零点附近,可以观察出 ...
- SQL Server 动态行转列(轉載)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段; 方法二:使用拼接SQL, ...
- Objective-c 中的变量
OC中的语言变量,按作用域可分为两种:局部变量和全局变量. 局部变量:也称为内部变量,局部变量是在方法内部声明的.其作用域仅限于方法内,离开该方法再使用这个变量就是非法的. 全局变量:也称为外部变量, ...
- ##DAY7 UINavigationController
##DAY7 UINavigationController #pragma mark ———————UINavigationController——————————— 概括: 导航视图控制器也是一个视 ...
- JSP页面中包含文件
在JSP中,主要有3种功能可以将外部内容包含到JSP文档中jsp:include动作. jsp:include动作允许我们在请求期间将其他页面的输出包含进来.它的主要优点是:在被包含的页面发生更改时, ...
- parquet code demo
http://www.programcreek.com/java-api-examples/index.php?source_dir=hiped2-master/src/main/java/hip/c ...
- java 读文件 解析
[Java]读取文件方法大全 1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** ...
- appium获取app应用的package和 activity。---新手总结(大牛勿喷,新手互相交流)
从网上搜索的方法: 如下: 1.查看源码 2.日志法a.启动待测apkb.开启日志输出:adb logcat>D:/log.txtc.关闭日志输出:ctrl+cd.查看日志直接搜索 :Displ ...
- ***EF中的问题(复习的同学可略过)
1.当类中出现两个导航属性时,需使用额外代码说明类之间的关系. [ForeignKey("Id")] [InverseProperty("Id"]