Java零基础入门-继承

一、概述

        上几期我们是重点学习了File类、String类型等基础知识。而这一期我要给大家讲一个基于以前讲对象时提到的,对象的三大特性,封装、继承、多态。而今天我就重点给大家讲一期对象的特性之一继承。

对于对象继承,你们又了解到多少与它有关的知识点呢?今天就让我带着大家走近它,近距离观察,感受它所带来的优势,既然被称为三大特性之一,那肯定有啥过人之处。

二、本期教学目标

  • 掌握何为继承
  • 了解类、超类与子类区别
  • 掌握继承的使用特点
  • 掌握如何继承
  • 掌握如何定义子类
  • 掌握如何定义覆盖方法
  • 掌握子类构造器
  • 掌握继承层次关系
  • ...

三、正文

1️⃣概念

        我们都知道,面向对象编程,你可以从已经存在的类中定义新的类。在Java术语中,如果类class1扩展成另一个类class2,那么class2被称为次类(子类、扩展类、派生类),class1则称为超类(父类、基类)。一般用于是父类和子类。

        那究竟什么是继承?总而言之,类的继承是指在一个现有类的基础上去捏造一个新的类,构建出来的新类被称作子类(子类、扩展类、派生类),现有类被称作父类(父类、基类),而且子类会自动拥有父类所有可继承的属性和方法。

        如上解释,你们能理解么?

2️⃣特点

        那对于继承而言,它有何特点呢?

  • 成员属性:

        1、父类中的成员变量若是非私有的,在子类中能直接访问,若父类中的成员变量是私有变量,子类则不能直接访问。

        2、当子父类中出现同名成员变量时,若子类想访问父类中的同名成员变量,则必须使用关键字super来进行访问。

  • 成员方法:

        1、当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法。

        总而言之,在继承关系中,子类可以访问父类的public 、protected属性和方法;若子类和父类在同一个包中,则父类默认访问修饰符(default)属性和方法也可以被子类继承。父类的构造函数不能继承。

3️⃣使用

        那到底应该怎么继承呢?一个类想继承另一个类,需要用extends关键字来实现。

继承格式如下:

class 子类 extends 父类 {}

        有一点需要大家注意,在Java中类是只支持单继承的,不允许多继承,没有多继承的概念,也就是说一个类只能有一个直接父类

例如下面这种情况就是不对的:

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

        但是支持多个类继承一个父类,这是可以的,比如如下示例:

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

         还有一种情况,支持多层继承,

例如C类继承自B类,而B类又可以去继承A类,这时,可以称C类也是A类的子类。

比如如下示例:

class A{}//类B继承类A,类B是类A的子类,而类C又是类B的子类。
class B extends A{} 
class C extends B{}

         所以说在Java中,子类和父类其实是一种相对概念,一个类可以是某个类的父类,也可以是另一个类的子类。

4️⃣覆盖方法

        对于父类而言,有些方法对子类来说不一定适用,为此,java就支持方法重载,支持将父类的方法进行覆盖,比如如下,A类是父类,它有一个eat()方法,但是在子类B类中, 它可以对该方法进行覆盖。

先定义一个A类。然后写个非私有方法。

public class A {public void eat(){System.out.println("我要吃肉肉!");}}

再定义个类B,继承类A。

public class B extends A{public static void main(String[] args) {B b = new B();b.eat();}}

可以看到,也可以直接使用类A的eat()方法。

         但如果类B不想eat()方法执行类A的逻辑,想自定义?怎么办?那就直接对该eat()方法进行方法重载即可。比如如下:

public class B extends A{public void eat(){System.out.println("我要吃素!!不吃肉肉");}public static void main(String[] args) {B b = new B();b.eat();}}

        我们可以来看下,控制台其打印内容:

         是不是输出了自定义的内容啊。那如果又想调用父类的eat()方法呢?那像这种情况,怎么区分调用呢?也不怕可以使用特殊的关键字super来解决这个问题。

    public void eat(){System.out.println("我要吃素!!不吃肉肉");super.eat();}

 可以看控制台,是不是直接就调用了A类的eat()方法

5️⃣继承层次

        对于继承,不仅限于一定层次。一个祖先类可以有多个子孙类,也可以在子孙关系下继续延续下去。虽然对于C++,一个类可以有多个超类,但是java不支持多重继承,但也提供了雷士多重继承的功能,这个我们后续来讲。

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

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

相关文章

Java: LinkedList的模拟实现

一、双向链表简介 上一篇文章我介绍了单向链表的实现,单向链表的特点是:可以根据上一个节点访问下一个节点!但是,它有个缺点,无法通过下一个节点访问上一个节点!这也是它称为单向链表的原因。 那么&#x…

全国计算机等级考试三级Linux应用与开发技术考试-习题汇总

https://blog.csdn.net/qq_42025798/article/details/119155696 3.第1章-计算机体系结构与操作系统-练习题-简答题 https://blog.csdn.net/qq_42025798/article/details/119186151 4.第1章-计算机体系结构与操作系统-练习题-填空题 https://blog.csdn.net/qq_42025798/article/…

android 资源文件混淆

AGP7.0以上引用AndResGuard有坑 记录下 在项目的build.gradle中添加如下 buildscript {ext.kotlin_version "1.4.31"repositories {google()jcenter()maven {url "https://s01.oss.sonatype.org/content/repositories/snapshots/"}}dependencies {class…

关东升老师力作!四本编程宝典,带你畅游编程世界

🌟《看漫画学C》:关东升老师以漫画的形式,让你在欢笑中轻松掌握C编程的核心知识。不再枯燥,不再难懂,让编程变得有趣又简单! 🎨《MATLAB科研绘图与学术图表绘制从入门到精通》:关东升…

前端学习之DOM编程案例:全选反选案例

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>全选反选</title> </head> <body><input type"checkbox" id"all">全选<ul><li><…

停用net stop mysql 服务名无效。

net stop mysql服务名 错误截图 解决方案 1. 按下 Win R 键&#xff0c;然后输入 services.msc 并按下 Enter 键&#xff0c;打开服务管理器 &#xff0c;查找与 MySQL 相关的服务 重新运行 net stop mysql服务名

CTF之社工-初步收集

题目就一个刷钻网站&#xff08;假的&#xff09; 扫描一下目录 发现还有一个登录界面 时间多的可以爆破一下&#xff08;反正我爆不出来&#xff09;&#xff0c;接着我们下载那个压缩包看看 发现是一个钓鱼小软件 没发现什么有用的信息那我们就去wireshark看看数据包喽&#…

Vue - 你可以说一说Veu3采用的Proxy与Vue2采用的defineProperty相比有什么优势吗

难度级别:中高级及以上 提问概率:85% 在Vue3中,双向绑定的核心API采用了ES6的Proxy代理方案,替换了Vue2的Object.defineProperty方案,那么这是为什么呢? 先说Object.defineProperty,我们知道它主要通过内部的set和get方法,劫持需要处理…

2.AK/SK鉴权

目录 什么是AK/SK AK/SK使用机制 时序图 什么是AK/SK 在云服务中&#xff0c;AK&#xff08;Access Key ID&#xff09;和SK&#xff08;Secret Access Key&#xff09;是访问云服务API的关键凭证对&#xff0c;主要用于身份验证和授权。AK是用户访问云服务的身份标识&…

1.数据结构和算法

文章目录 数据结构逻辑结构集合结构线性结构树形结构图形结构 物理结构顺序存储结构链式存储结构 算法基本特性目标 总结数据结构总结算法总结 数据结构 「数据结构」指的是&#xff1a;数据的组织结构&#xff0c;用来组织、存储数据。 逻辑结构 逻辑结构&#xff08;Logic…

Win安装SSH教程

在Windows操作系统上安装和配置SSH&#xff08;Secure Shell&#xff09;可以让你通过加密的方式远程连接和管理其他计算机或服务器。以下是安装和配置SSH的简单教程&#xff1a; 下载OpenSSH for Windows&#xff1a; 访问OpenSSH for Windows的官方网站&#xff08;https://g…