继承与多态

第十七讲

A)构造方法的重载:只需看参数即可。如果想在一个构造方法中调用另外一个构造方法,那么可以用this()的方式调用,this()括号中的参数表示目标构造方法的参数。this()必须要作为构造方法的第一条语句。

B)继承:Java是单继承的,意味着一个类只能继承另一个类,继承使用extends关键字。

C)当生成子类对象时,会默认先调用父类的不带参数的构造方法,生成父类对象,再执行该子类的构造方法,生成子类对象。

D)如果子类的构造方法想调用调用父类的构造方法,可以用super()来显式调用,这样就不会寻找父类不带参数的构造方法。与this()一样,super()必须为构造方法中的第一条语句。

 

E)关于继承的3点

1)父类有的,子类也有

2)父类没有的,子类可以增加

3)父类有得,子类可以改变

 

F)关于继承的注意事项

1)构造方法不能被继承

2)方法和属性可以被继承

3)子类的构造方法隐式调用父类不带参数的构造方法

4)当父类没有不带参数的构造方法,子类要用super()来调用父类的构造方法

 

G) 方法重写:子类与父类的方法返回类型一样,名称一样,参数一样,这样子类与父类方法构成了重写关系。

H)方法重写 与 方法重载 的关系:重载发生在同一个类内部,重写发生在父类与子类之间。

I)子类的方法内可以用 super().方法 形式来调用父类的方法,且不必摆在方法的第一行。

J)在定义一个类时,如果没有显示指定该类的父类,那么该类就会继承于java.lang.Object类。

K)多态:子类就是父类,男人是人,玫瑰是花,多态是指:父类型的引用可以指向子类型的对象。

 

L)Parent p = new Child();当使用多态方式调用方法时,首先检查父类中是否有那个方法,如果没有则编译错误。因为p是父类型,父类型不一定有子类型的方法。

a)向上类型转换(upcast):比如说Cat类型转换为Animal类型,即子类转换为父类型,不需要显示指定。

b)向下类型转换(downcast):比如Animal类型转换为Cat类型,即父类型转换为子类型,需要使用强制类型转换,同时这个父类的引用需要指向该子类的对象。

 

转载于:https://www.cnblogs.com/vmax-tam/p/4050138.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++学习心得

c是大一开始接触的一门新的语言,说老实话当时学的并不好兴趣指数5颗星中只有3颗。但是既然是学这方面的,还是好好听课学习吧。下面简单的说一下c的一些学习心得吧! c是什么?c是一种面向对象的程序设计语言。c是c的一种提高&#x…

实现strstr()

实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack "hello", needle "ll" 输出: 2示例…

有效电话号码

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。 你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字…

JSP中RequestDispatcher的用法

RequestDispatcher是一个Web资源的包装器&#xff0c;可以用来把当前request传递到该资源&#xff0c;或者把新的资源包括到当前响应中。RequestDispatcher接口中定义了两个方法&#xff1a;include/forward 由于<jsp:include>只能指定固定的jsp文件名&#xff0c;不能动…

TCP/IP三次握手与四次握手

原文地址 http://blog.csdn.net/whuslei/article/details/6667471 http://blog.csdn.net/wo2niliye/article/details/48447933 建立TCP需要三次握手才能建立&#xff0c;而断开连接则需要四次握手。整个过程如下图所示&#xff1a; 先来看看如何建立连接的。 首先Client端发送连…

vim支持nginx语法高亮

下载nginx源码&#xff0c;解压之后&#xff0c;将contribu/vim/*拷贝到~/.vim/目录&#xff0c;如果没有~/.vim/目录&#xff0c;则创建即可。 cp -r contrib/vim/* ~/.vim/或 mkdir -p ~/.vim/ cp -r contrib/vim/* ~/.vim/此时再打开conf/nginx.conf就可以看到已经语法高亮…

Delphi 正则表达式语法(4): 常用转义字符与 .

Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] varreg: TPerlRegEx; beginreg : TPerlRegEx.Create(nil);reg.Subject : 期待Delphi 2008 for Win32&#xff01;;reg.RegEx : \d;reg.Replacement : ◆;reg.ReplaceAll;ShowMessage(reg.Subje…

C语言操作mysql

php中 mysqli, pdo 可以用 mysqlnd 或 libmysqlclient 实现 前者 从 php 5.3.0起已内置到php中, 并且支持更多的特性&#xff0c;推荐用 mysqlnd mysqlnd &#xff0c; libmysqlclient 对比&#xff1a;http://php.net/manual/en/mysqlinfo.library.choosing.php mysqlnd 目前是…

Hadoop DistributedCache分布式缓存的使用

转载请注明&#xff1a;http://www.cnblogs.com/demievil/p/4059141.html 我的github博客&#xff1a;http://demievil.github.io/ 做项目的时候遇到一个问题&#xff0c;在Mapper和Reducer方法中处理目标数据时&#xff0c;先要去检索和匹配一个已存在的标签库&#xff0c;再对…

每日温度

根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#xf…

什么是Modbus

什么是Modbus 1. Modbus如何工作 Modbus是通过设备之间的几根连线来传递数据&#xff0c;最简单的设置就是主站和从站之间用一跟串口线相连。数据通过一串0或者1来传递&#xff0c;也就是位。0为正电压&#xff0c;1为负电压。位数据传递速度非常快&#xff0c;常见的传输速度为…

博客刚刚开通!

今天老贼开播了&#xff01;以后请大家多多关照&#xff01; 转载于:https://www.cnblogs.com/xiaosayi/p/4065313.html

Android实例-拍摄和分享照片、分享文本(XE8+小米2)

结果&#xff1a; 1.分享文本不好使&#xff0c;原因不明。有大神了解的&#xff0c;请M我&#xff0c;在此十分感谢。 2.如果想支持图片编辑&#xff0c;将Action事件的Editable改为True。 相关资料&#xff1a; 官网地址&#xff1a;http://docwiki.embarcadero.com/RADStudi…

go语言 expected ; found a

错误代码&#xff0c;这是一段测试go语言类型转换的代码 package type_testimport "testing"type MyInt int64func TestImplicit(t *testing.T) {var a int32 1var b int64 3b (int64)avar c MyInt 4// c bt.Log(a, b, c) }报错代码 b (int64)a改正 b int6…

win8 metro 调用摄像头拍摄照片并将照片保存在对应的位置

刚刚做过这类开发&#xff0c;所以就先献丑了&#xff0c;当然所贴上的源代码都是经过验证过的&#xff0c;已经执行成功了&#xff0c;希望能够给大家一些借鉴&#xff1a; 以下是metro UI代码&#xff1a; <Pagex:Class"Camera.MainPage"xmlns"http://sche…

poj 3678 Katu Puzzle(2-sat)

Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a boolean operator op (one of AND, OR, XOR) and an integer c (0 ≤ c ≤ 1). One Katu is solvable if one can find each vertex Vi a value Xi (0 ≤ Xi ≤ 1) suc…

go 语言 first argument to append must be slice

错误代码 func TestSliceGrowing(t *testing.T) {s : [4]int{1, 2, 3, 4}for i :0; i<10; i {s append(s, i)t.Log(len(s), cap(s))} }报错代码 s append(s, i)原因&#xff1a;append的第一个参数必须是切片 更正 func TestSliceGrowing(t *testing.T) {s : []int{1,…

豆瓣网静态页面

divcss网站登录注册豆瓣读书视频 音乐同城小组阅读 豆瓣FM东西更多豆瓣视频 影讯&购票电视剧排行榜 分类影评预告片 向后向前3/5正在热映全部正在热映>>即将上映 烈日灼心 4.7终结者&#xff1a;创世纪... 4.7百团大战 4.7刺客&#xff1a;聂隐娘 4.7近期热门更多影视…

C++并发编程实战(豆瓣评分5.4)

评分已说明一切&#xff0c;切勿踩坑&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 推荐的翻译 C并发编程实战 关注公众号回复【C并发编程实…

Please use boost/bind/bind.hpp + using namespace boost::placeholders

The practice of declaring the Bind placeholders (_1, _2, …) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior. 提示w…