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第十九天 - 继承、接口、多态、面向对象的编程思想的更多相关文章

  1. (C/C++学习笔记) 十八. 继承和多态

    十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...

  2. OC:面向对象的编程思想、基本的知识点总结、强,弱引用

    OC 面向对象 和 面向过程 参考 面向过程:使用步骤划分功能,然后用函数一步一步的调用 面向对象:OOP (Object Oriented Programming) 使用功能来简化问题, 面向对象语 ...

  3. 面向对象的编程思想和Java中类的概念与设计

    面向对象的编程思想学习,面向对象内容的三条主线;1.java类及类的对象2.面向对象的三大特征3.其他关键字学习内容:3.1面向对象与面向过程面向对象与面向过程在应用上的区别 Java中类的概念与设计 ...

  4. C++面向对象的编程思想机器人

    C++的面向对象的编程思想如下,一般情况为一个类中包含了这个对象的所有属性与函数,直接调用这个对象就可以对这个对象执行它可以使用的任何操作. #include <iostream> cla ...

  5. JS高级---面向对象的编程思想(贪吃蛇梳理)

    面向对象的编程思想(贪吃蛇梳理) 模拟贪吃蛇游戏,做的项目 地图: 宽,高,背景颜色,因为小蛇和食物都是相对于地图显示的, 这里小蛇和食物都是地图的子元素, 随机位置显示, 脱离文档流的, 地图也需要 ...

  6. Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现

    前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...

  7. Delphi面向对象的编程思想

    第一章.建立面向对象的新思维 1.1.1历史背景 目前对象技术的前沿课题包括设计模式.分布式对象系统.和基于网络的对象应用等 目前面向对象的语言包含4个基本的分支: 1.基于Smalltalk的:包括 ...

  8. Python基础之面向对象:1、面向对象及编程思想

    一.人狗大战 1.需求 用代码模拟人.狗打架的小游戏 人和狗种类不同,因此双方的属性各不相同 推导一: 人和狗各有不同属性 使用字典方式储存属性较为方便,并可储存多种属性 # 1.在字典内储存'人'属 ...

  9. java 面对对象(抽象 继承 接口 多态)

    什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接 ...

随机推荐

  1. c语言中重要函数

    gets函数,从标准输入读取一行文本,一行输入由一串字符组成,以一个换行符结尾: gets函数丢弃换行符,并在该行的末尾存储一个NUL字符(类似‘\0’), 然后返回一个非NULL值. 当gets函数 ...

  2. hdu 5104 Primes Problem(prime 将三重循环化两重)

    //宁用大量的二维不用量小的三维 #include <iostream> #include<cstdio> #include<cstring> using name ...

  3. iOS 从app跳转到Safari、从app打开电话呼叫

    1.从app跳转到Safari NSString* strIdentifier = @"http://www.ybyb.com"; BOOL isExsit = [[UIAppli ...

  4. iOS中的地图和定位

    文章摘自http://www.cnblogs.com/kenshincui/p/4125570.html#location  如有侵权,请联系删除. 概览 现在很多社交.电商.团购应用都引入了地图和定 ...

  5. [一个经典的多线程同步问题]解决方案一:关键段CS

    前面提出了一个经典的多线程同步互斥问题,本篇将用关键段CRITICAL_SECTION来尝试解决这个问题. 本文先介绍如何使用关键段,然后再深层次的分析下关键段的实现机制和原理. 关键段CRITICA ...

  6. Python一些字符串判断和转换

    设s是字符串: s.isalnum()      判断所有字符都是数字或者字母 s.isalpha()  判断所有字符都是字母 s.isdigit()  判断所有字符都是数字 s.islower() ...

  7. 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。

    有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来. 这两个文件内容如下: context.txt “并不是每个人都需要$(qunar)自己的粮食,$(f ...

  8. ajenti试用感受

    ajenti试用感受_展现技术动态_百度空间 ajenti试用感受   今天看开源中国介绍一款名为"服务器管理系统"的开源软件发布了,名为ajenti,页面感觉不错,对机器的采集信 ...

  9. How many prime numbers(求素数个数)

    How many prime numbers Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  10. cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]

    上篇中,能够正常执行NDK中的样例.可是由cocos2d-x生成的项目,不能编译成功.上一篇戳这里: http://blog.csdn.net/xjjjjjjjjjjj/article/details ...