Java面向对象的特点之:继承

news2024/11/26 8:45:58

对于继承,当大家看到这个词语的时候,在现实生活中,想必也会自然而然的想到了:继承家产??那么,在Java的面向对象的时候,也存在这样的思想!!

下面笔者来带领大家走进:继承!!

class Dog {
    public String name ;
    public  int age ;
    
    public void eat() {
        System.out.println(name +" 正在吃狗粮!");
    }
    
    //添加特有的方法
    public void wangwang() {
        System.out.println(name+"正在汪汪叫!");
    }
}

class Cat {
    public String name ;
    public  int age ;

    public void eat() {
        System.out.println(name +" 正在吃mao粮!");
    }
    
    //添加特有的方法
    public void miaomiao() {
        System.out.println(name+" 正在喵喵叫,惹人爱!(づ ̄3 ̄)づ╭❤~");
    }
}

在上述的代码中,Dog 与Cat这两个类之间有共用的成员变量,成员方法,也有特有的成员方法!!

 对于上述的共有的成员属性,在上述代码中,仅仅定义了两个类,但是当定义多个类,都含有共有的成员属性,那么写起来,不得麻烦死??因此,我们可以将共有的属性抽取出来,放到一个类当中,当要使用的时候,就可以去哪儿拿就可以了!!

对上述代码进行简单更改:


class Animal {
    public String name ;
    public  int age ;

    public void eat() {
        System.out.println(name +" 正在吃饭!");
    }
}
class Dog extends Animal {
   

    //添加特有的方法
    public void wangwang() {
        System.out.println(name+"正在汪汪叫!");
    }
}

class Cat extends Animal{

    //添加特有的方法
    public void miaomiao() {
        System.out.println(name+" 正在喵喵叫,惹人爱!(づ ̄3 ̄)づ╭❤~");
    }
}

在上述代码中:

在上述的代码中,就用了继承的思想!!

继承的最大意义:是对代码的重复利用!!(is a)的关系!!extands 是继承的关键字!!

class Dog extends Animal 所代表的意义是:  Dog is  a Animal

继承的概念:

继承(inheritance)机制:是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性 的基础上进行扩展增加新功能,这样产生新的类,称派生类(子类)。继承呈现了面向对象程序设计的层次结构, 体现了 由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用

继承的简单语法:

修饰符(可写可不写)  class 子类名称  extends 父类名称 {

  …………

…………

}

注意:

  1. 子类会将父类中的成员变量或者成员方法继承到子类中了
  2. 子类继承父类之后,必须要新添加(也可以不添加)自己特有的成员,体现出与基类的不同,否则就没有必要继承了
  3.  Java中只能继承一个父类,并不支持多继承!
  4. 子类也可以当父类

父类成员的访问!!

1.子类和父类不存在同名的成员变量(比较简单,容易理解)

2.子类和父类成员变量同名!

如果子类与父类有同名的成员变量,则优先访问子类自己的!!


class Base {  //父类
    public int a ;
    public int b ;
    public int c ;  //默认成员变量,c ---->0
}

class Derived extends Base {
    public int c = 9 ;
    public void func() {
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

public class test {
    public static void main(String[] args) {
        Derived derived = new Derived();
        derived.func();
    }
}

对于上述的代码,父类和子类有着相同的成员变量,那么,请看一下代码的运行结果:

 拓展一下:当我们在类中有一下代码的时候:

    public class Base {
        int a;
        int b;
        int c;
    }

    public class Derived extends Base {
        int a;
        char b;

    }

并且给其赋值:

 public void method(){
        a=100;
        b=110;
        c=120;
    }

通过上述代码,思考一下:a ,b, c 的值分别为多少??

 在子类方法中通过子类对象访问成员时:

  1. 如果访问的成员变量子类中,那么就先访问子类自己的成员变量
  2. 如果访问的成员变量子类中没有,那么则访问父类继承下来的,如果父类中没有定义,那么编译报错!
  3. 如果访问的成员变量与父类的成员变量同名,则优先访问子类自己的成员变量!

综上所述:成员变量的访问遵循就近原则,子类自己有,则先访问子类自己的,如果子类没有,那么像父类中查找!

在上述代码中,如果,就想要访问父类的成员c ,那么可以使用:super.c

  System.out.println(super.c);

对于super关键字 :可以用来在子类方法中访问父类的成员!!

super关键字的使用:

  1. super. date :在子类当中访问父类的成员变量
  2. super. func() :在子类当中访问父类的成员方法

对于super关键字的使用时注意事项:

  1. 只能在非静态方法中使用
  2. 在子类方法中,访问父类的成员变量和方法

子类中访问父类的成员方法!!

  1. 成员方法名字不同 (简单)
  2. 成员方法名字相同,跟父类成员的访问类似,可以用super来访问

说明:

  1. 通过子类对象访问父类与子类中不同名的方法时,优先在子类中找,找到则访问,找不到,则编译报错!
  2. 通过派生类(子类)对象访问父类和子类同名方法时,如果父类和子类同, 方法的参数列表不同(重载),根据调用方法传递的参数选择合适的方法访问,如果没有,则报错!

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 源码介绍以及原理介绍

文章目录 1.概述2. LocalVariablesSorter#2.1 class info2.2 fields2.3 constructors2.4 methods2.4.1 newLocal method2.4.2 local variables method3.工作原理3.1 添加新変量3.2处理旧变量4.总结1.概述 在上一节文章中:【ASM】字节码操作 工具类与常用类 LocalVar

深度学习入门——基于TensorFlow的鸢尾花分类实现(TensorFlow_GPU版本安装、实现)

基于TensorFlow的鸢尾花分类实现0 引言1 基本介绍和环境搭建1.1关于TensorFlow-GPU环境搭建第一步:安装Anaconda:第二步:安装GPU版本需要,明确显卡型号第三步:打开conda终端建立Tensorflow环境第四步:激活虚拟环境&…

最简单例子解释python的transpose函数

二维数组的transpose就是矩阵的转置,这里直接略过。直接讨论三维情况。 首先,我们要弄清楚transpose的轴是什么意思? 0是代表了第一个轴,1是代表了第二个轴,2是代表了第三个轴,这里我们用x,y&…

基于PHP+MySQL米步童鞋商城网站的设计与实现

随时时代的发展,更多的宝妈们希望给宝宝买鞋子的时候能够通过更加简单方便的方式来进行,因为宝妈每天都要面对很多的时候,不能够经常到商场闲逛,所以她们急需一种通过互联网的方式来购买童鞋,所以我们通过PHP语言和MySQL数据开发了米步童鞋商城网站 米步童鞋商城网站的主要功能…

认识JUC

JUC 一、Java JUC 简介 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用 的实用工具类,用于定义类似于线程的自定义子 系统,包括线程池、异步 IO 和轻量级任务框架。 提供…

基于阈值预分割的区域生长分割法研究-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、区域生长原理✳️ 三、基于阈值预分割的区域生长算法✳️ 四、确定生长准则✳️ 五、实验结果✳️ 六、参考文献✳️ 七、Matlab代码获取✳️ 一、引言 在区域分割处理技术之中,又包含有区域生长分割技术以及区域分裂合并分割…

车辆工程的入门学习

知乎 汽车控制需要了解的 汽车的行驶阻力与驱动力 做好汽车控制需要学什么 车辆控制工程 off-road vehicle 越野车 各智能系统介绍 制动防抱死系统(anti-lock brake system, ABS) 电子稳定性控制(electronic stability control,…

SAP ADM100-1.1之SAP系统架构

一、SAP系统组成结构 SAP系统包括一个逻辑数据库、一个或多个实例。实例(也称为Central Instance中央实例)与数据库一起形成功能性的SAP系统。在每个SAP系统中都应该配置一个Central Instance中央实例。如果系统中仅有一个单实例那就存在“中央系统”,并且与它的数据库运行在…

上海亚商投顾:沪指冲高回落 中字头板块爆发领涨

上海亚商投顾前言:无惧大盘大跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪沪指今日冲高回落,3100点得而复失,黄白二线分化严重,权重走强题材弱势&#xff…

[附源码]java毕业设计校园跑腿系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

深度学习入门(四十六)计算机视觉——区域卷积神经网络(R-CNN)系列

深度学习入门(四十六)计算机视觉——区域卷积神经网络(R-CNN)系列前言计算机视觉——区域卷积神经网络(R-CNN)系列课件R-CNN兴趣区域(RoI)池化层Faster R-CNNFaster R-CNNMask R-CNN精度和速度比较总结教材…

Maven基础学习——tomcat插件配置(含web工程配置)

tomcat插件配置一、前言二、步骤1.登录网站后搜索TomcatMaven2.找到插件坐标3.选择插件版本4.将插件配置到web工程中5.测试插件三、Web工程配置1.在webapp下新建文件2.删除web.xml中多余代码3.pom.xml文件一、前言 在学习Maven时,肯定会遇到tomcat插件,…

ESP8266--Arduino开发(驱动OLED显示文字和图片)

文章目录一、0.96 IIC OLED介绍二、安装库文件2.1、库屏幕控制相关API2.2、库绘制相关API2.3、文本相关API2.4、图像相关API三、显示字母四、显示汉字五、显示图片一、0.96 IIC OLED介绍 OLED是一种利用多层有机薄膜结构产生电致发光的器件,它很容易制作&#xff0…

SPARKSQL3.0-Catalog源码剖析

SPARKSQL3.0-Catalog源码剖析 一、前言 阅读本节需要先掌握Analyzer阶段的相关知识 在Spark SQL 系统中,Catalog 主要用于各种函数资源信息和元数据信息 (数据库、数据表数据视图、数据分区等)的统一管理。 初次看这种解释还是比较模糊&a…

5周年,时过境迁,千变万化

2022年11月22日 小雪 长沙 阴小雨 下午 吃饭 遇雨 跑 不知不觉开始博客5年啦,注册账号有6年了。 ~~~那就浅写一首不像诗的诗聊表纪念吧~~~ 其实偶尔还是会迷茫, 但不必过分紧张, 每个时代都有每个时代化的特色的机遇与挑战, …

服务案例|AI算法在Oracle指标异常检查、故障预测之牛刀小试

LinkSLA与南京大学合作,将AI算法引入运维平台,将趋势性、周期性强的指标数据通过机器学习,实现异常检测、故障预测等功能。 下面分享一个通过AI算法,对Oracle数据库故障预测的案例。 在3月16日,MOC工程师接到某公司的…

中学数学教学参考杂志社中学数学教学参考编辑部2022年第27期目录

谈学论教 “平行四边形”章首课的教学思考 李斌; 1-3 高中数学课程中的函数教学 孔鑫辉; 3-4《中学数学教学参考》投稿:cn7kantougao163.com 对方程起始课教学的探究 梅琴; 5-7 注重师生互动,激活数学课堂 董启福; 8-9 例析高中数学体验教学法的…

RPC框架(一)——简易RPC

RPC介绍 RPC,Remote Procedure Call 即远程过程调用,远程过程调用其实对标的是本地过程调用 一个RPC框架要进行使用应该要具有如下的组件(功能) 从整体层次来看,一个RPC协议的框架应该具有三个层面: 服…

RSE2021/云检测:基于小波变换和连续多尺度空间注意的上下块深度网络云检测

RSE2021/云检测Deep network based on up and down blocks using wavelet transform and successive multi-scale spatial attention for cloud detection基于小波变换和连续多尺度空间注意的上下块深度网络云检测0.摘要1.概述2.方法3.背景4.实验数据5.我们的方法5.1.UD-NET5.1…

frp内网穿透

文章目录原理如果没有配置ssh,需要先配置ssh免密登录到pc内网穿透流程frp自启动frps自启动frpc自启动原理 1、在公网中转服务器上面搭建FRP服务器。同时,在内网服务器上面安装FRP客户端。 2、按照UP的FRP客户端配置文件进行说明。7000端口是FRP服务端开放…