博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中的继承和重写
阅读量:2440 次
发布时间:2019-05-10

本文共 3375 字,大约阅读时间需要 11 分钟。

1.1 继承的概述

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。

1.2继承的格式&使用

在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。

格式:

class子类 extends父类 {}

案例代码一:

package com.itheima_01;/* * 继承:多个类有共同的成员变量和成员方法,抽取到另外一个类中(父类),在让多个类去继承这个父类,我们的多个类就可以获取到父类中的成员了。 * extends *  */public class ExtendsDemo {	public static void main(String[] args) {		DotA1 d = new DotA1();		d.start();				LOL1 l = new LOL1();		l.start();	}}class Game1 {	String name;	double version;//版本号	String agent;//代理商		public void start() {		System.out.println("游戏启动了");	}		public void stop() {		System.out.println("游戏关闭了");	}}class DotA1 extends Game1 {	/*String name;	double version;//版本号	String agent;//代理商		public void start() {		System.out.println("游戏启动了");	}		public void stop() {		System.out.println("游戏关闭了");	}*/}class LOL1 extends Game1 {	/*String name;	double version;//版本号	String agent;//代理商		public void start() {		System.out.println("游戏启动了");	}		public void stop() {		System.out.println("游戏关闭了");	}*/	}

1.3 继承的特点

在类的继承中,要注意以下以下一些问题,具体如下:
1,在java中,类只支持但继承,不允许多继承,也就是说一个类只能有一个直接父类。

这种情况是不合法的。

 class A{}

     class B{}

     class C extends A,B{}  // C类不可以同时继承A类和B

2、一个父类可以被多个子类继承,例如下面这种情况是允许的。

 class A{}

     class B extends A{}

     class C extends A{}   //B和类C都可以继承类A

3,java中类不可以多继承,但是可以多重继承

下面这种情况是允许的。

     class A{}

     class B extends A{}   //B继承类A,类B是类A的子类

     class C extends B{}   //C继承类B,类C是类B的子类,同时也是类A的子类

4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类

案例代码

package com.itheima_01;/* * Java中继承的特点: * 			Java语言只支持单一继承,只能继承一个父类(一个儿子只能有一个亲爹) * 			Java语言支持多层继承(一个儿子可以有一个亲爹,还可以有一个亲爷爷) *  */public class ExtendsDemo2 {	public static void main(String[] args) {		LOL l = new LOL();		l.update();		l.start();	}}class Game {	public void start() {		System.out.println("游戏启动了");	}}class PCGame extends Game {	public void update() {		System.out.println("PCGame更新了");	}}class MobileGame extends Game {	public void update() {		System.out.println("MobileGame更新了");	}}class LOL extends PCGame {	}

1.4 继承中成员变量的特点

 A:子类只能获取父类非私有成员

  子父类中成员变量的名字不一样直接获取父类的成员变量

  子父类中成员变量名字是一样的获取的是子类的成员变量

  

 B:就近原则:谁离我近我 就用谁

  如果有局部变量就使用局部变量

  如果没有局部变量,有子类的成员变量就使用子类的成员变量

  如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量

 C: super:可以获取父类的成员变量和成员方法,用法和this是相似的

案例代码

package com.itheima_01;/* * 继承中成员变量的特点 * 		子类只能获取父类非私有成员 * 		子父类中成员变量的名字不一样直接获取父类的成员变量 * 		子父类中成员变量名字是一样的获取的是子类的成员变量 *  * 就近原则:谁离我近我就用谁 * 		如果有局部变量就使用局部变量 * 		如果没有局部变量,有子类的成员变量就使用子类的成员变量 * 		如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量 * 		啥都没有,出错了!!! *  * super:可以获取父类的成员变量和成员方法,用法和this是相似的 */public class ExtendsDemo3 {	public static void main(String[] args) {		Kid3 k = new Kid3();		k.show();	}}class Dad3 {	String name = "建霖";}class Kid3 extends Dad3 {	String name = "四葱";		public void show() {		String name = "五葱";				System.out.println(super.name);		System.out.println(this.name);		System.out.println(name);	}}

案例代码四

子类中重写了这个方法,调用子类的

    方法的重写:在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法

package com.itheima_01;/* * 继承中成员方法的特点 * 		子类中没有这个方法,调用父类的 * 		子类中重写了这个方法,调用子类的 * 	方法的重写:在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法 	方法的重载:在一个类中,有多个重名的方法,但是其参数不一样(参数的个数,参数的类型,参数的顺序),和返回值无关  */public class ExtendsDemo4 {	public static void main(String[] args) {		Kid4 k = new Kid4();		k.eat();	}}class Dad4 {	public void eat() {		System.out.println("小酌两口");		System.out.println("去睡觉了");	}}class Kid4 extends Dad4 {	public void eat() {		System.out.println("好好吃饭");	}}

转载地址:http://djjqb.baihongyu.com/

你可能感兴趣的文章
SQL或NoSQL:Google App Engine-第1部分
查看>>
SitePoint Podcast#178:Web设计过程和创造力
查看>>
移动端获取视频第一帧移动端_后端即服务-第1部分
查看>>
畅谈理想未来为主题的铅笔画_与专家畅谈Node.js
查看>>
SitePoint Podcast#173:释放混乱的猴子
查看>>
unity 暴风雨天气效果_浏览器趋势2012年10月:暴风雨前的平静?
查看>>
php 查询成绩_与专家讨论PHP: 成绩单
查看>>
一年新的一年_一年的云创新
查看>>
使用PHP从Access数据库中提取对象,第2部分
查看>>
openbiz_Openbiz Cubi:健壮PHP应用程序框架,第1部分
查看>>
使用PHP从Access数据库中提取对象,第1部分
查看>>
使用云waf的案例_9种流行的云使用案例
查看>>
类集合转换类集合_PHP中的集合类
查看>>
使用SimplePie消费Feed
查看>>
运算符二进制_基本转换和二进制运算符
查看>>
SitePoint播客#121:在线社区圆桌会议第2部分
查看>>
pchart_用pChart绘制图表
查看>>
Git简介,第1部分
查看>>
微信 获取地理位置名称_使用地理名称的目标地理位置
查看>>
graph api_与Facebook Graph API集成
查看>>