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

简介: <h1 style="text-align:center">JAVA中的继承及其常见问题分析</h1> <p><br></p> <h2>1、JAVA中继承的定义</h2> <p><br></p> <p>JAVA中,类的继承是通过<strong><span style="color:#ff0000">扩展其他类而形成新类</span></strong>来实现的,原来的类称为父类(Su

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();	//	创建子类








目录
相关文章
|
2月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
95 43
Java学习十六—掌握注解:让编程更简单
|
12天前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
18天前
|
Java
在Java中,接口之间可以继承吗?
接口继承是一种重要的机制,它允许一个接口从另一个或多个接口继承方法和常量。
55 1
|
22天前
|
安全 Java 开发者
Java多线程编程中的常见问题与解决方案
本文深入探讨了Java多线程编程中常见的问题,包括线程安全问题、死锁、竞态条件等,并提供了相应的解决策略。文章首先介绍了多线程的基础知识,随后详细分析了每个问题的产生原因和典型场景,最后提出了实用的解决方案,旨在帮助开发者提高多线程程序的稳定性和性能。
|
1月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
58 2
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
26 2
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
23 3
|
2月前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
41 2