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…

php中多选提交如何获取,php中checkbox值获取,显示,多选值获取

php教程中checkbox值获取,显示,多选值获取最简单checkbox获取值代码checkboxdemocheckboxdemodemonstrates checkboxes"handleformcheckbox.php">"11.00">fries"chksoda" value "12.85">soda"ch…

php对mysql的操作教程,php与Mysql的一些简单的操作

先贴代码复制代码 代码如下:数据库相关$con mysql_connect("localhost","root","root"); //链接数据库if(!$con){die(连接失败! . mysql_error()); //判断是否成功}/* if(mysql_query("CREATE DATABASE testdb&qu…

php curl curlopt_getfields,PHP中CURL的CURLOPT_POSTFIELDS参数使用细节

核心提示:CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的。但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果。CURL确实是一个不错的好工具,不仅在PHP中还是其他的操…

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 邮箱开发教程,php开发中表单验证邮箱及URL的教程

这篇文章讲述的是php开发中表单验证邮箱及URL的教程。下面是小编整理于php培训班的笔记,希望学过的同学可以能够起到回顾作用。同时也能帮助没有接触到的同学。PHP 表单验证 - 验证 E-mail 和 URLPHP 表单必填PHP 表单完成本节展示如何验证名字、电邮和 URL。PHP - …

matlab函数算错,函数是这个样子的,我是不懂应该怎么输入,试了好多种情况都是错...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼函数全部如下:function [Graph,varargout] GraphLoad(FileName,IndexFileName,SkipSqueeze,varargin)% Loads a graph from file%% Receives:% FileName - string - the file to load% Nx2 of integers - the actual l…

defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...

https://www.xin3721.com/eschool/python.html在Python里面有一个模块collections,解释是数据类型容器模块。这里面有一个collections.defaultdict()经常被用到。主要说说这个东西。综述:这里的defaultdict(function_factory)构建的是一个类似dictionary…

matlab 当已知两个矩阵满足分别一定条件时_程序继续执行,MATLAB程序设计基础

2.1常量与变量2.1.1 特殊常量变量名功 能 说 明ANS(ans)缺省变量名,以应答最近一次操作运算结果i或j虚数单位Pi圆周率NaNNot-a-number,表示不定值tic秒表开始执行INF(inf)代表无穷大toc秒表停止Date日历Clock时钟2.1.2一般变量变量命名遵守的原则:1、 变…

java 四人帮,Java PatternDesign of GOF(四人帮巨著,享誉15年)第十五模式

Java PatternDesign of GOF(四人帮力作,享誉15年)第十五模式Java PatternDesign of GOF(四人帮力作,享誉15年)第十五模式板桥里人 http://www.jdon.com 2002/04/21(转载请保留)Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求reque…

php火车订票系统设计论文,基于JSP的火车票订票系统 JSP146(毕业设计+论文)

摘 要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分使用计算机对火车信息进行管理,具有手工管理所无法比拟…

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

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

nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站

Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问。先了解一下网站正常运行所用到的用户、目录权限:Nginx进程运行用户:接…

php wmi,window_Win7系统中的wmi控件是什么?有什么用?,  wmi控件是什么Windows - phpStudy...

Win7系统中的wmi控件是什么?有什么用?wmi控件是什么Windows Management Instrumentation (WMI) 控件是一种工具,可以用它配置远程计算机或本地计算机上的 WMI 设置。wmi控件功能1、备份储存库可以配置 WMI 控件以定期备份 WMI 储存库&#xf…

php使用aes256加密,PHP中的AES-256加密

看看mcrypt moduleAES-Rijndael的例子取自here$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);$iv mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);$key pack(H*, "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");#…

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查询可更新结果集,jdbc 可更新结果集

jdbc中ResultSet在jdk 5.0以后默认都是可滚动的,不可更新的。可滚动的意思是我们可以调用absolute(),previous(), first()等操作来更新结果集中的指针位置。当我们需要结果集可更新的时候,可以设置它的值为ResultSet.CONCUR_UPDATABLE&#…