iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java由浅入深讲解继承上
  • 306
分享到

Java由浅入深讲解继承上

2024-04-02 19:04:59 306人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1.什么是继承2.继承的细节2.1super关键字2.2子类的构造方法2.3super和this区别继承同样是面向对象程序的特点 1.什么是继承 所谓继承就是抽取类的共性,进而实

继承同样是面向对象程序的特点

1.什么是继承

所谓继承就是抽取类的共性,进而实现代码的复用

继承的关键字是extends

现在定义一个类Tree,里面有树的名字、来源和科属,方法是打印树的形态特征,如下:

class Tree {
    String name;
    String source;
    String genu;
    public void trait() {
    }
}

上面的类除了方法trait外,其它成员都是重复的,所以我们再定义一个类Plant将这些重复的成员抽取出来,如下:

class Plant {
    String name;
    String source;
    String genu;
}

然后再让Tree继承Plant即可:

class Plant {
    String name;
    String source;
    String genu;
}
class Tree extends Plant{
    public void trait() {
 
    }
}

其中Tree是子类/派生类,Plant是父类/基类

那么Tree中是否真的有Plant中的成员,不妨实例化一个对象来看看:

实例化的意义除了实现代码的复用之外,还有则是实现多态,多态会在后面文章讲到

2.继承的细节

在了解什么是继承之后来对继承的一些细节进行深入了解

2.1super关键字

super在非静态方法中使用,主要作用是在子类中访问父类的成员,它可以作用于子类的成员变量、成员方法和构造方法,在构造方法的使用在子类构造方法中讲解

  • 子类成员和父类成员重名

子类成员和父类成员重名会优先使用子类的成员,这一点很好证明,如图:

我们现在在Treed的trait中加入如下语句:

 public void trait() {
        System.out.println(super.name+"高可以达到30米");
    }

结果如图:

如果是方法重名,会构成重载或重写,重写是多态内容,这里只简单介绍一下,就是父类和子类方法的返回值、方法名和参数都是相同的,如果是重载,可通过参数来判断是访问的谁的方法,重写的话,在方法中添加 “super.方法名” 来访问父类的方法

2.2子类的构造方法

因为子类是继承了父类的成员的,所以在写子类构造方法时第一件事就是调用父类的构造方法,这里使用的依旧是super,我们在Plant中写上一个有三个参数的构造方法:

public Plant(String name, String source, String genu) {
        this.name = name;
        this.source = source;
        this.genu = genu;
    }

子类的构造方法如下(假设子类没有自己的成员变量):

public Tree(String name, String source, String genu) {
        super(name, source, genu);
    }

有一点需要注意:super()只能在构造方法中的第一行出现

之前在写构造方法的时候讲过:即使用户没有写构造方法,编译器也会提供一个不带参数的构造方法,这里也同理,只不过子类构造方法中第一行会加上super()

2.3super和this区别

相同点不同点
只能在类的非静态方法中用来访问非静态成员方法和成员变量
 
this是当前对象的引用,super相当于是在子类中引用继承父类的那部分成员
 
在构造方法中使用只能放在第一行(所以构造方法中不能同时出现super()和this())this是非静态成员方法的一个隐藏参数,super不是
 

继承的内容就先到这里,继承剩下的内容包括后面多态的内容所使用的类都会是本篇所创建的类

到此这篇关于Java由浅入深讲解继承上的文章就介绍到这了,更多相关Java继承内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java由浅入深讲解继承上

本文链接: https://www.lsjlt.com/news/147454.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java由浅入深讲解继承上
    目录1.什么是继承2.继承的细节2.1super关键字2.2子类的构造方法2.3super和this区别继承同样是面向对象程序的特点 1.什么是继承 所谓继承就是抽取类的共性,进而实...
    99+
    2022-11-13
  • Java由浅入深讲解继承下
    目录1.代码块初始化2.protected关键字3.final关键字4.Java中允许的继承方式本篇紧接上一篇内容继续,还是从继承里的细节开始 1.代码块初始化 关于代码块的定义和使...
    99+
    2022-11-13
  • Java由浅入深刨析继承
    目录继承继承的介绍生活中的继承继承的好处继承的格式继承的demo子类不能继承的内容super 与 this 关键字构造器不能被继承final修饰的类不能被继承方法重写介绍使用场景与案...
    99+
    2022-11-13
  • Java由浅入深带你精通继承super
    目录什么是继承背景super关键字protected 关键字final 关键字什么是继承 面向对象的特征: 封装:不必要公开的数据成员和方法,使用private关键字进行修饰。意义:...
    99+
    2022-11-13
  • 深入浅析JAVA的继承
    本篇文章给大家分享的是有关深入浅析JAVA的继承,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。继承(inheritance)是Java OOP中一个非常重要的概念。继承是在复用...
    99+
    2023-05-31
    java 继承 ava
  • 深入浅析Java中的异常继承
    这篇文章给大家介绍深入浅析Java中的异常继承,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是“意外、例外”的意思,也就是非正常情况。...
    99+
    2023-05-31
    java 异常继承 ava
  • 【C++杂货铺】继承由浅入深详细总结
    文章目录 一、继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承方式和访问限定符1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值...
    99+
    2023-09-22
    c++ 开发语言 人工智能 热门
  • Java由浅入深全面讲解方法的使用
    目录一、方法的概念及其使用1.1、什么是方法1.2、方法的定义1.3、方法调用的执行过程1.4、实参和形参的关系(重要)二、方法的重载2.1、为什么需要方法重载2.2、方法重载的定义...
    99+
    2022-11-13
  • 深入浅析Java中 IO流的继承结构
    深入浅析Java中 IO流的继承结构?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 其对称性质...
    99+
    2023-05-31
    java io流 继承结构
  • Java面向对象关键字extends继承的深入讲解
    目录一、问题引出二、继承extends2.1继承的用法2.2基本语法2.3继承的好处2.4继承性总结一、 问题引出 面向对象的编程思想使得代码中创建的类更加具体,他们都有各自的属性...
    99+
    2022-11-12
  • C语言由浅入深讲解文件的操作上篇
    目录为什么使用文件什么是文件文件名关于文件的一些概念文件函数fopenfclose实例代码绝对路径文件的打开方式文件操作流程为什么使用文件 前面写的通讯录,增加人数退出程序后,数据就...
    99+
    2022-11-13
  • Java Mybatis框架由浅入深全解析上篇
    目录学习路线什么是三层架构常用的SSM框架(了解)什么是框架什么是Mybatis框架添加框架的步骤1.新建库建表2.新建maven项目3.修改目录4.修改pom.xml文件5.修改p...
    99+
    2022-11-13
  • Android——Theme和Style-由浅入深,全面讲解
    1、官方详细解读 样式和主题背景  |  Android 开发者  |  Android Developers 2、应用场景 类似web设计中css样式。将应用设计的细节与界面的结构和行为分开。 样式style :应用于 单个 View ...
    99+
    2023-09-01
    Android Theme主题背景 Style样式
  • 由浅入深讲解python中的yield与generator
    前言 本文将由浅入深详细介绍yield以及generator,包括以下内容:什么generator,生成generator的方法,generator的特点,generator基础及高级应用场景,genera...
    99+
    2022-06-04
    由浅入深 python generator
  • 由浅入深讲解vue2和vue3的区别
    目录前言vue2 vs vue3 对比双向绑定更新实例化生命周期获取props数据和方法的定义给父组件传值emitwatchEffect组件通信注意路由总结前言 vue2和vu3之前...
    99+
    2023-02-08
    vue2和vue3的区别是什么 vue2和vue3区别大吗 vue2和vue3原理的区别
  • 深入浅析java中面向对象的继承和多态
    深入浅析java中面向对象的继承和多态?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。继承和多态一.this super关键字this: 可以在构造器中的第一代码中...
    99+
    2023-05-31
    java 继承 多态
  • Java深入浅出讲解代理模式
    目录1、动态代理模式2、JDK动态代理3、JDK动态代理代码演示1、动态代理模式 动态代理的特点: 当代理对象的时候,不需要实现接口代理对象的生成,是利用JDK的API,动态的在内存...
    99+
    2022-11-13
  • C语言由浅入深讲解线程的定义
    目录线程的概念线程的创建线程的终止线程标识的比较线程的取消线程等待线程分离线程的概念 可以简单理解为一个正在独立运行的函数 注: 1.posix线程是一套标准吗,而不是实现 2.线程...
    99+
    2022-11-13
  • Java由浅入深细数数组的操作上
    目录1.JVM的内存分布2.引用类型变量的特点3.一维数组的使用3.1定义和初始化3.2数组的访问3.3打印数组所有的元素3.4数组的拷贝3.5作为参数和返回值本篇介绍一维数组以及相...
    99+
    2022-11-13
  • 深入浅析java中的继承关系类的加载顺序
    这篇文章将为大家详细讲解有关深入浅析java中的继承关系类的加载顺序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。详解java中继承关系类加载顺序问题实例代码:public class So...
    99+
    2023-05-31
    java 继承关系类 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作