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. android UI跨线程操作

    android应用程序也是单线程程序,主线程为UI线程. android 线程是非安全的,即不要在子线程中更新 UI. public class MasterActivity extends Acti ...

  2. JS HTML DOM

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...

  3. Bzoj2034 2009国家集训队试题 最大收益 贪心+各种优化+二分图

    这个题真的是太神了... 从一開始枚举到最后n方的转化,各种优化基本都用到了极致.... FQW的题解写了好多,个人感觉我全然没有在这里废话的必要了 直接看这里 各种方法真的是应有尽有 大概说下 首先 ...

  4. hdu acm 2154(多解取一解)

    //题目中结果有一条限制就是最后必须跳回A,如果我们的思想框在这个条件上就很容易卡住,因为这样的条件下的路径很难有规律的罗列,然而我们说这个图形中有三个区域,我们算出每个区域的第n-1次的种类数,然后 ...

  5. C++数组与指针

    指向数组元素的指针 一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址.指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中) ...

  6. css伪类伪元素

    在CSS中,模式(pattern)匹配规则决定哪种样式规则应用于文档树(document tree)的哪个元素.这些模式叫着选择符(selector). 一条CSS规则(rule)是选择符{属性:值; ...

  7. C#代码模拟http发送get和post请求

    private string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)W ...

  8. Stack trace对性能的影响

    package ceshi; public class ExceptionTest { public long maxLevel = 20; public static void main(Strin ...

  9. SPSS19.0实战之聚类分析

    这篇文章与上一篇的回归分析是一次实习作业整理出来的.所以参考文献一并放在该文最后.CNBlOG网页排版太困难了,又不喜欢live writer…… 聚类分析是将物理或者抽象对象的集合分成相似的对象类的 ...

  10. HDU 1240 Asteroids!

    三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...