java继承的终极奥义_java学习笔记12-继承

继承就是子类继承父类的特征和行为

有时候单一划分某个类别并不能处理所有情况,某些类别下有明显不同的子类,这些子类虽然拥有类似的行为和属性,但是他们各自发生的这些行为的方式或者属性对某些结果的影响是不一样的,这就需要划分出更多细致的类别。

比如之前类和对象笔记中,球员这个类别,球员都有球衣,号码,得分这些属性,打球的行为,但是很明显,篮球运动员和足球运动员在这些属性和行为上是有区别的。篮球运动员打球可以用手,胳膊。足球运动员打球可以脚踢头顶。篮球运动员一场得分两位数很正常,足球运动员显然不可能一场得分两位数。

基于这个分析。我们有必要把这个类拆分成篮球运动员类和足球运动员类。首先我们把所有球员的公共属性和公共行为抽象出来,形成一个类。然后通过继承,让两个子类都去享有这个类的公共属性和行为,但是具体行为依靠自己来实现。(测试框架中的测试基类)

java提供了extends关键字来实现继承功能

首先新建一个球员类Player:

packagelesson;public classPlayer {public int number; //号码

public int score; //得分

public String position; //司职

public String name; //姓名

public voidplayBall(){

System.out.println("姓名:"+this.name);

System.out.println("号码:"+this.number);

System.out.println("得分:"+this.score);

System.out.println("司职:"+this.position);

}

}

接下来创建篮球运动员类和足球运动员类

packagelesson;public class BasketBallPlayer extendsPlayer{public static voidmain(String[] args){

BasketBallPlayer player1= newBasketBallPlayer();

player1.name= "jordan";

player1.number= 23;

player1.position= "得分后卫";

player1.score= 33;

player1.playBall();

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

a8099f351a596659a47b2a7b173f1e24.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

packagelesson;public class FootBallPlayer extendsPlayer {public static voidmain(String[] args){

FootBallPlayer player2= newFootBallPlayer();

player2.name= "齐达内";

player2.number= 10;

player2.position= "中场";

player2.score= 2;

player2.playBall();

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

118a3699bed6460d237a60c52b1aeee0.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

虽然这两个类中没有任何属性和方法,但是能点出Player类的属性,还能调用父类的方法。说明它继承到了父类的属性和方法。

需要注意的是:子类并不能继承父类的构造方法

创建子类对象时,会先调用父类的构造方法,然后调用自己的构造方法。

由于每个类都默认有一个默认的无参数的构造方法,所以为了看出效果。需要显示的创建这几个类的构造方法。

packagelesson;public classPlayer {public int number; //号码

public int score; //得分

public String position; //司职

public String name; //姓名

publicPlayer(){

System.out.println("我是Player");

}public voidplayBall(){

System.out.println("姓名:"+this.name);

System.out.println("号码:"+this.number);

System.out.println("得分:"+this.score);

System.out.println("司职:"+this.position);

}

}

packagelesson;public class BasketBallPlayer extendsPlayer{publicBasketBallPlayer(){

System.out.println("我是BasketBallPlayer");

}public static voidmain(String[] args){

BasketBallPlayer player1= newBasketBallPlayer();

player1.name= "jordan";

player1.number= 23;

player1.position= "得分后卫";

player1.score= 33;

player1.playBall();

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

packagelesson;public class FootBallPlayer extendsPlayer {publicFootBallPlayer(){

System.out.println("我是FootBallPlayer");

}public static voidmain(String[] args){

FootBallPlayer player2= newFootBallPlayer();

player2.name= "齐达内";

player2.number= 10;

player2.position= "中场";

player2.score= 2;

player2.playBall();

}

}

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

c16f020179f44bd311e728903dc8b5cc.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

c8823011c437ffa3241dd78ba63db0d0.pngwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

结果说明:在创建子类对象时,会先调用父类的构造方法,然后调用自己的构造方法

这个结果并不能说明子类在继承父类时,也继承了父类的构造方法,只能说默认会调用而已。

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

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

相关文章

flink java 并行度_flink solt和并行度

简介Flink运行时主要角色有两个:JobManager和TaskManager,无论是standalone集群,flink on yarn都是要启动这两个角色。JobManager主要是负责接受客户端的job,调度job,协调checkpoint等。TaskManager执行具体的Task。Ta…

java 写传奇游戏吗,文字版传奇游戏

学习java中IO操作自己写的一个小文字游戏,写了一天半两千多行,有点low的,因为没有使用到数据库,所以数据存放在文本文档中,大部分代码都是在处理往文档中读写内容, 就显得有些繁琐,主要锻炼了自…

【Dart】P0 Win、Mac 使用与安装

Dart 使用与安装 Dart 下载安装Windows 版本MacOS版本处于境外安装 Dart 开发工具 Dart 下载安装 Windows 版本 安装网址: http://gekorm.com/dart-windows/ 安装后测试: dart --versionMacOS版本 首先安装 Homebrew: 终端输入&#xff…

php cachelock,巧用lock解决缓存击穿的解决方案

背景缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。解决方案1、设置热点数据永远不过期…

mysql 目录更改 php,Linux下更改MySQL目录

MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步: 1、home目录下建立da更改MySQL目录MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:1、home目录下建立data…

php扩展返回字符数组,PHP扩展之数组字符串处理

今天介绍一下PHP扩展来处理数组和字符串,附带一个对比原生PHP的处理效率:我的测试机是装的PHP5.6.12,实现下面这个功能:function phprandstr($a, $z, $n) {$b array();$max count($a);for ($i 0; $i $tmp "";for ($j 0; $j $z…

jsp源码oracle数据库,JSP与oracle数据库交互案例

本案例为咖啡销售情况录入查询系统一、数据输入系统:1. 设计输入信息页面代码如下:咖啡管理系统——录入系统欢迎来到录入系统vcm0gYWN0aW9uPQ"inputaction.jsp" method"post" name"form1" id"form1">咖啡名…

崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析

2013数据库大会:崔华-基于Oracle的SQL优化案例分析崔华的新书即将出版,其数据库大会上的演讲也非常精彩,他的新书十分值得期待。2013年中国数据库技术大会第二天的"Oracle架构与优化"专场中,来自中航信资深Oracle数据库工程师崔华为…

模板消息 php实例,PHP微信模板消息操作示例

本文实例讲述了PHP微信模板消息操作方法。分享给大家供大家参考,具体如下:微信SDK:class Oauth {//获得全局access_tokenpublic function get_token(){//如果已经存在直接返回access_token//if($_SESSION[access_token] && $_SESSION…

linux设置静态ip后端口不能上网,Centos7设置静态IP后无法上网的解决方法

在VMWare中安装的本地虚拟机CentOS7操作系统,动态IP地址会经常变化,设置成静态IP地址后,本地局域网可以互相访问,但CentOS7系统无法访问互联网,按以下步骤解决这个问题。1、以系统管理员打开VMWare2、选择虚拟网络编辑…

深度Linux修改分辨率6,Deepin 修改自定义分辨率

之前我有篇文章是写显示器超频问题,当时感觉Deepin超频麻烦,折腾换成了Win10,但用了断时间后,感觉Win10真的不好用,夜览模式软件适配差,CPU占用率高,字体颗粒感强,显示器看着眼睛很累…

linux下如何bash文件,Linux系统的文件管理命令及bash的相关工作特性

一、Linux系统的文件管理命令:1 \pwd:printing working directory2 \cd:change directory cd [/PATH/TO/SOMEDIR/]可带可不带,切换回家目录;注意:bash中~表示家目录;cd ~:切换回自己的家目录&#xff…

2019浙江C语言二级答案,2019年下半年二级C语言试题及答案

机遇总是有的,如果把握不住,不要怨天忧人,原因只是自己不够优秀;不要把时间当垃圾处理,唯有珍惜光阴、努力刷二级C语言试题,才能提升生命的质量。1)若有以下语句:typedef struct S{ int g;char …

win10定时关机c语言,win10定时关机在哪?win10设置定时关机的三种方法

win10定时关机在哪?很多win10用户可能还不会设置定时关机,下面脚本之家小编就给大家带来win10设置定时关机的三种方法,一起来看看吧!方法一:Win10定时关机命令:shutdown –s –t 3600后面的3600代表秒&…

android编译日志在哪,Android编译环境中的JDK存放位置

this.p{ m:2,b:2,loftPermalink:,id:fks_081066082085084067092086081095080081089075087087,blogTitle:Android编译环境中的JDK存放位置,blogAbstract:因为Ubuntu 10.04已经不带有SUN JDK,所以这个需要到sun网站上下载,并手动安装。所以,这个…

华为鸿蒙系统HarmonyOS手机,华为鸿蒙系统2.0适配哪些机型

华为鸿蒙系统2.0适配机型大部分都是华为手机,那么都有哪些手机适合这个系统呢,用户想要使用鸿蒙系统应该在哪去申请呢,别着急下面我们一起了解吧。华为鸿蒙系统2.0适用机型推荐HarmonyOS 2.0手机开发者Beta公测招募入口:点击进入同…

webstorm 运行android,Windows React Native环境搭建:webstorm+android studio 及解决热更新

工具准备:SDKAndroid SDK Build-tools:23.0.1SDK Platform:Android N 、6.0 、5.1.1、5.0.1、4.4.2、4.1.2Android模拟器镜像:6.0、5.1和4.1python使用 python2nodejs使用官网最新即可更改源:npm config set registry …

华为鸿蒙系统使用视频,原生鸿蒙系统,华为WATCH 3上手视频曝光

华为即将在 6 月 2 日发布华为 WATCH 3,而真机图和上手视频已经出现在网络上。华为 WATCH 3 将出厂预装鸿蒙 HarmonyOS,圆形表盘 旋转表冠设计。爆料图和视频都应该都出自华为的线下门店,爆料图展示了华为 WATCH 3 和华为 WATCH 3 Pro 的包装…

在html中怎么写加起来的,css可以在html里面写吗?

css可以在html里面写吗?答案是可以的。那么如何在HTML中写CSS?下面给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。下面我们来看一下在HTML中写css的方法:1、内部样式表--在head标签…

广东省2021高考2bi补录成绩查询,重磅!广东省2021年普通高考美术统考成绩1月8日起可查询!...

我省2021年普通高考美术、书法和广播电视编导术科统考工作已全面结束。现就美术、书法和广播电视编导术科统考成绩公布有关事项通知如下:一、成绩公布时间和方式1月8日10:00起,考生可通过省教育考试院官微(ID:gdsksy)小程序和广东教育考试服务…