JAVA学习(六):JAVA中的继承及其常见问题分析

JAVA中的继承及其常见问题分析

1、JAVA中继承的定义

JAVA中,类的继承是通过扩展其他类而形成新类来实现的,原来的类称为父类(Super Class)或基类,新的类称为原来类的子类或派生类。在子类中,不仅包含了父类的属性和方法,还可以增加新的属性和方法,从而使得父类的基本特征可被所有子类对象共享。

注:类的继承并不改变类成员的访问权限,也就是说,如果父类的成员是公有的、被保护的或默认的,它的子类仍具有相应的这些特性。

/******************************************************************/
//类继承的定义格式
Class ChildClass extends FatherClass
//ChildClass类继承FatherClass ,ChildClass是子类,FatherClass是父类
{
//类的主体
}
/******************************************************************/

JAVA的继承规则:JAVA不支持多重继承,只允许一个类直接继承另一个类,即子类只能有一个父类,也就是说,extends关键字后面只能有一个类名。尽管一个类只能有一个直接的父类,但是它可以有多个间接的父类。

2、JAVA中常见问题

在继承中常遇到下图中的问题:

以下结合代码进行分析:

产生问题的代码如下:

public class Ooprogram {	//	父类
	public void say(){
		System.out.println("我是父类!");
	}
	public class ChildOoprogram extends Ooprogram{	//子类继承父类
		public void childsay(){
			System.out.println("我是子类!");
		}
	}
	public static void main(String [] args) {
		Ooprogram father=new Ooprogram();	//创建父类
		father.say();	//父类调用父类
		ChildOoprogram child=new ChildOoprogram();	//	创建子类
		child.say();	//子类调用父类
		child.childsay();	//子类调用子类
	}
}

正确的代码如下:

public class Ooprogram {	//	父类
	public void say(){
		System.out.println("我是父类!");
	}
	public class ChildOoprogram extends Ooprogram{	//子类继承父类
		public void childsay(){
			System.out.println("我是子类!");
		}
	}
	public static void main(String [] args) {
		Ooprogram father=new Ooprogram();	//创建父类
		father.say();	//父类调用父类
		ChildOoprogram child=father.new ChildOoprogram();	//	创建子类
		child.say();	//子类调用父类
		child.childsay();	//子类调用子类
	}
}

它们的区别在于:如何创建子类,即:

ChildOoprogram child=new ChildOoprogram();	//	创建子类

与

ChildOoprogram child=father.new ChildOoprogram();	//	创建子类

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 08:12:42

JAVA学习(六):JAVA中的继承及其常见问题分析的相关文章

Java学习笔记——异常中的继承问题

<span style="font-size:18px;"> </span> /* 这个例子是关于异常在继承中的问题,当BException继承AException时,父类抛出AException,那么子类只能抛出AException或BException,而不能抛出其他异常,因为子类不能比父类还"有问题".下面是例子: */ <span style="font-size:18px;">class AExcep

【JAVA学习】struts2 中 Actionsupport 的作用

尊重原创:http://xumiao900.iteye.com/blog/469760 Action 跟 Actionsupport 的区别 当我们在写action的时候,可以实现Action接口,也可以继承Actionsupport这个类.到底这两个有什么区别呢? Action接口有: public static final java.lang.String SUCCESS = "success"; public static final java.lang.String NONE

Java学习之InputStream中read()与read(byte[] b)

Java学习之InputStream中read()与read(byte[] b) 这两个方法在抽象类InputStream中都是作为抽象方法存在的, JDK API中是这样描述两者的: read() :  从输入流中读取数据的下一个字节,返回0到255范围内的int字节值.如果因为已经到达流末尾而没有可用的字节,则返回-1.在输入数据可用.检测到流末尾或者抛出异常前,此方法一直阻塞. read(byte[] b) :  从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中.以整数形式返回

JavaScript学习13 JavaScript中的继承

JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式:对象冒充 function Parent(username) //父类对象 { this.username = username; //下面的代码最关键的部分就是将子对象的this传递给了父对象 this.sayHello = function() { alert(this.username); } } f

JAVA学习篇--Java类加载

由来: 与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序(解释性语言).当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Javaclass加载到JVM里头运行,负责加载Javaclass的这部分就ClassLoader.中文叫做类加载器. 类加载器就好比一个代理,你需要什么,我通过类加载器将你需要的内容返回给你! 类加载器有什么作用? 当程序需要的某个类,那么需要通过类加载器把类的二进制加载到内存中. 解释: 类加载器也是Java类,因为其他是java类的

[ Java学习基础 ] Java构造函数

构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只能与new运算符结合使用. 示例代码如下: 1 //Rectangle.java文件 2 package com.a51work6; 3 4 // 矩形类 5 public class Rectangle { 6 7 // 矩形宽度 8 int width; 9 // 矩形高度 10 int hei

好程序员Java学习路线Java bean是个什么概念

好程序员Java学习路线Java bean是个什么概念,Bean的中文含义是"豆子",顾名思义JavaBean是一段Java小程序.JavaBean实际上是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去.所有遵循一定编程原则的Java类都可以被称作JavaBean.一. Java Bean技术概述??????? Java Bean是基于Java的组件模型,由属性.方法和事件3部分组成.在该模型中,JavaBean可以被修改或

【JAVA】六 JAVA Map 一 HashMap

[JAVA]六 JAVA Map 一 HashMap JDK API java.util Interface Map Type Parameters: K - the type of keys maintained by this map V - the type of mapped values All Known Subinterfaces: Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, LogicalMe

JAVA学习篇--JAVA的两种编程模式对比

在Drp项目中,讲解了两种编程模式Model 1和Model2,下面是对这两种模式的简单理解,以及由于Model2是基于MVC架构的模式,就将我们易混淆的MVC与我们之前学的三层架构进行对比学习一下. Model1 所谓Model1就是JSP大行其道的时代,在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.用少量的JavaBean来处理数据库连接.数据库访问等操作. 代码示例:修改用户信息 主页面的js跳转: function