【java】继承

java继承

  • 继承的基本概念
  • super、this
  • 构造方法

继承的基本概念

面向对象中有3个重要的特征:继承、封装、多态。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

一个类只能有一个父类,不能存在多个父类;但一个父类可以有多个子类。

生活中的继承:
在这里插入图片描述
继承采用extends语法:子类 extends 父类

class Parent{String name = "zhangsan";void test(){System.out.println("test");}
}
class Child extends Parent{
}

super、this

如果当子类也有name属性,父类也有name属性,这个时候子类的name是子类的呢还是父类的呢?

public class chapter06  {public static void main(String[] args) {Child1 c = new Child1();c.test();}
}
class Parent1 {String name = "zhangsan";
}
class Child1 extends Parent1 {String name = "lisi";void test() {System.out.println(name);}
}

在这里插入图片描述

可以看到结果:lisi,说明当属性相同时,子类优先使用自己的属性,但这样我们的父类属性去哪了呢,要怎么调用呢?

这个时候,就需要使用super、this的关键字来进行区分。

public class chapter06  {public static void main(String[] args) {Child1 c = new Child1();c.test();}
}
class Parent1 {String name = "zhangsan";
}
class Child1 extends Parent1 {String name = "lisi";void test() {System.out.println(super.name);System.out.println(this.name);System.out.println(name);}
}

在这里插入图片描述

构造方法

public class chapter07 {public static void main(String[] args) {Child2 c1 = new Child2();Child2 c2 = new Child2();Child2 c3 = new Child2();}
}
class Parent2 {
}class Child2 extends Parent2 {
}

我们可以看到以上代码,我们创建了三个子类的对象,这个时候有个问题是,子类对象是创建了三个,但父类对象创建了多少呢?是创建了一个,还是创建了三个呢?

我们知道,创建对象时会调用我们的构造方法,所以可以在类里面添加构造方法来进行查看,父类到底创建了几个。

public class chapter07 {public static void main(String[] args) {Child2 c1 = new Child2();Child2 c2 = new Child2();Child2 c3 = new Child2();}
}
class Parent2 {Parent2 () {System.out.println("parent...");}
}
class Child2 extends Parent2 {Child2() {System.out.println("child...");}
}

在这里插入图片描述
可以看到结果,父类对象也创建了三次。
所以从类的角度来讲,不同的子类确实有相同的父类。在这里插入图片描述
但从对象的角度来说,一个子类对象对应一个父类的对象,这些父类对象的名字相同而已。其实,准确来说,没有父类对象这个概念,不过是子类继承到父类的属性和方法,然后开辟的一块内存空间。
在这里插入图片描述
父类对象是在子类对象创建前创建完成,创建子类对象前,会调用父类的构造方法完成父类的创建。

默认情况下,子类对象构建时,会默认调用父类的构造方法完成父类对象的创建。使用的是super的方式,只不过JVM自动完成。

public class chapter07 {public static void main(String[] args) {Child2 c1 = new Child2();Child2 c2 = new Child2();Child2 c3 = new Child2();}
}
class Parent2 {String username;Parent2 (String name) {username = name;System.out.println("parent...");}
}
class Child2 extends Parent2 {Child2() {super("zhangsan");System.out.println("child...");}
}

如果父类提供构造方法,那么JVM不会提供默认的构造方法,那么子类应该显示调用super方法构建父类对象。

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

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

相关文章

Mac 安装不在 Apple 商店授权的应用程序

文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中,发现一些好用的应用程序,但是出于某些原因,应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…

Spring Boot读取yml或者properties配置信息

文章目录 Spring Boot读取yml或者properties配置信息方法一:Value获取基本信息,适用于少量信息方法二:通过注解ConfigurationProperties(prefix "spring.datasource")方法三:通过api Environment Spring Boot读取yml或…

Flask简介与基础入门

一、了解框架 Flask作为Web框架,它的作用主要是为了开发Web应用程序。那么我们首先来了解下Web应用程序。Web应用程序 (World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。 1、一切从客户端发起请求开始。 所有Flask程序都必须创建一个程序…

vue diff 双端比较算法

文章目录 双端指针比较策略命中策略四命中策略二命中策略三命中策略一未命中四种策略,遍历旧节点列表新增情况一新增情况二 删除节点双端比较的优势 双端指针 使用四个变量 oldStartIdx、oldEndIdx、newStartIdx 以及 newEndIdx 分别存储旧 children 和新 children …

41.利用matlab 平衡方程用于图像(matlab程序)

1.简述 白平衡 白平衡的英文为White Balance,其基本概念是“不管在任何光源下,都能将白色物体还原为白色”,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿。 所谓的白平衡是通过对白色被摄物的颜色还原&…

机器学习——SMO算法推导与实践

一、 硬间隔-SMO算法推导 明天再说,啊。。。。感觉天空明朗了很多,即使现在已经很晚了 还是要打开柯南,看看电视,等待天气预报所说的台风天吧! 一时之间,忽然失去了用markdown语法写下推导过程的勇气。。。…

使用Dockerfile构建镜像

使用Dockerfile构建镜像 使用Dockerfile构建镜像 创建一个空目录 docker mkdir docker进入此目录 cd docker创建并编辑DockerFile文件 vi touch DockerfileDockerfile文件的内容如下: from node label maintainer xxxqq.com RUN git clone -q https://github…

fishing之第二篇Gophish钓鱼平台搭建

文章目录 一、Gophish介绍二、Gophish部署三、Gophish配置0x01 功能介绍0x02 Sending Profiles(钓鱼邮箱发送配置)0x03 Email Templates(钓鱼邮件模板)0x04 Landing Pages(伪造钓鱼页面)0x05 Users & Groups(用户和组)0x06 Campaigns(钓鱼测试)0x07 Dashboard(仪…

Stable Diffusion - Stable Diffusion WebUI 支持 SDXL 1.0 模型的环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132056980 SDXL 1.0 版本 是 Stable Diffusion 的最新版本,是基于潜在扩散模型的文本到图像生成技术,能够根据输入的任何文…

【VUE】前端实现防篡改的水印

效果 水印的作用 图片加水印的操作一般是由后端来完成,有些站点保护的知识产权的类型可能比较多,不仅仅是图片,可能还有视频、文字等等,对于不同类型的对象添加水印后端操作比较复杂,所有有些站点逐步的让前端去进行水…

Redhat Linux 安装MySQL安装手册

Redhat安装MySQL安装手册 1 下载2 上传服务器、解压并安装3 安装安装过程1:MySQL-shared-5.6.51-1.el7.x86_64.rpm安装过程2:MySQL-shared-compat-5.6.51-1.el7.x86_64.rpm安装过程3:MySQL-server-5.6.51-1.el7.x86_64.rpm安装过程4&#xff…

奥威BI—数字化转型首选,以数据驱动企业发展

奥威BI系统BI方案可以迅速构建企业级大数据分析平台,可以将大量数据转化为直观、易于理解的图表和图形,推动和促进数字化转型的进程,帮助企业更好地了解自身的运营状况,及时发现问题并采取相应的措施,提高运营效率和质…