一个小时搞定JAVA面向对象(4)——继承

文章目录

  • 继承
      • 继承中,成员变量和成员方法的访问特点
        • 当子类和父类的成员变量不重名:
        • 当子类和父类的成员变量重名:
      • 成员方法
      • 方法的重写
        • 方法重写注意事项
    • final、Supre和this关键字
      • final关键字
        • final关键字修饰变量
        • final关键字修饰方法
      • super的使用方法
      • this的使用方法
      • 继承的特点

继承

继承格式:子类 extends 父类

注意要点:

  • 子类可以继承父类中的是私有和非私有成员,但是不能使用父类中的私有成员
  • 构造方法不能继承

继承中,成员变量和成员方法的访问特点

当子类和父类的成员变量不重名:

总结:**看等号左边是谁,先调用谁中的成员 .**如果等号左边是父类类型,只能调用父类中的成员变量,如果等号左边是子类类型,既能调用子类的,还能调用父类中继承过来的非私有成员.

当子类和父类的成员变量重名:

总结:看等号左边是谁,先调用谁中的成员,子类没有,找父类

成员方法

成员方法:看new的是谁,就行调用谁中的方法,子类没有,就找父类.

总结:

成员变量的访问特点:看等号左边是谁,先调用谁中的成员变量.

成员方法的访问特点:看new的是谁,就先调用谁中的方法.

方法的重写

概述:子类中有一个和父类方法名以及参数列表相同的方法

访问要求:看new的是谁,就先调用谁中的.如果new的是子类,调用子类重写的的方法,子类没有这个方法的话,就往父类找.

检测是否重写方法的注解:@Override

方法重写注意事项
  1. 子类重写父类方法的权限必须要大于等于父类权限
  2. 子类方法重写父类方法,方法名和参数列表一样
  3. 私有方法\构造方法\静态方法 不能被重写
  4. 子类重写父类方法之后,返回值类型应该是父类方法返回值类型的子类类型???

方法重写的使用场景:功能改造,子类需要对父类中已经实现好的功能进行重写改造的时候使用.

final、Supre和this关键字

final关键字

final关键字是最终的意思,可以修饰类,变量和方法.

  1. 修饰类:该类就不能被继承
  2. 修饰变量:变量会变为常量,只能赋值一次,之后就不能改变了.final修饰的变量被称为常量.[常量名我们奋斗史大写的,常量一般我们会声明为static]
final关键字修饰变量
  1. 成员变量:在定义的同时必须给出初始值
  2. 局部变量:可以在使用之前赋值
final关键字修饰方法

final修饰的方法,子类是不能重写该方法的!

super的使用方法

概述:super代表的就是父类的引用,作用是调用父类中的成员

使用方法:

a.调用父类构造方法-> 在子类中的构造中写

  • super() -> 调用父类无参构造

  • super(实参) -> 调用父类有参构造

    b.调用父类成员变量:

  • super.成员变量名

    c.调用父类成员方法:

  • super.成员方法名(实参)

//案例理解
public class Fu {int num = 10;public Fu(){System.out.println("我是父类中的无参构造");}public Fu(int data){System.out.println("我是父类中的有参构造");}public void method(){System.out.println("我是父类中的method方法");}
}
//===================================================
public class Zi extends Fu{int num = 100;public Zi(){super();//调用父类中的无参构造System.out.println("我是子类中的无参构造");}public Zi(int num){super(10);//调用父类的有参构造System.out.println("我是子类中的有参构造");}public void method(){super.method();//调用父类的method方法System.out.println("我是子类中的method方法");System.out.println(num);//子类自己的System.out.println(super.num);//调用父类的num}
}
//==================================
public class Test01 {public static void main(String[] args) {Zi zi = new Zi();System.out.println("============");Zi zi1 = new Zi(10);System.out.println("============");Zi zi2 = new Zi();zi2.method();}
}

每个构造方法的第一行默认都会有一个Super( ),不写jvm会自动提供一个super()代表父类无参构造.

//案例理解
public class Fu {	//父类public Fu(){System.out.println("我是父类中的无参构造");}
}
public class Zi extends Fu{	//子类public Zi(){//super();System.out.println("我是子类中的无参构造");}public Zi(int i){//super();System.out.println("我是子类中的有参构造");}
}public class Test {public static void main(String[] args) {Zi zi = new Zi();System.out.println("===========");Zi zi1 = new Zi(10);}
}

this的使用方法

概述:代表的是当前对象(哪个对象调用的this所在的方法,this就代表哪个对象)

作用:

  1. 区分重名的成员变量和局部变量
  2. 调用当前对象中的成员

使用方法:

a.调用当前对象的构造:在构造中写

  • this():调用当前对象的无参构造

  • this(实参):调用当前对象的有参构造

    b.调用当前对象的成员变量:

  • ​ this.成员变量名

    c.调用当前对象的成员方法:

  • ​ this.成员方法名(实参)

//案例理解
public class Person {int num = 10;public Person(){//this(10);System.out.println("我是Person中的无参构造");}public Person(int data){//super();super和this不能同时再构造中出现this();System.out.println("我是Person中的有参构造");}public void method(){int num = 20;System.out.println(num);//20System.out.println(this.num);//10this.method01();System.out.println("我是Person类中的method方法");}public void method01(){System.out.println("我是Person类中的method01方法");}
}
//=======================================
public class Test01 {public static void main(String[] args) {Person person = new Person();System.out.println("========");Person person1 = new Person(10);System.out.println("========");Person person2 = new Person();person2.method();}
}

继承的特点

1.继承只支持单继承,不能多继承public class A extends B,C{}  -> 错误
2.继承支持多层继承public class A extends B{}public class B extends C{}
3.一个父类可以有多个子类public class A extends C{}public class B extends C{}4.构造方法不能继承,也不能重写私有方法可以继承,但是不能被重写静态方法可以继承,但是不能被重写

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

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

相关文章

BioPorto胰高血糖素样肽-1抗体(GLP-1)

丹麦BioPorto Diadnostics公司致力于提供世界领先的GLP-1抗体。基于结合GLP-1位点的不同,他们筛选出了不同的抗GLP-1抗体。有的抗体可以同时结合GLP-1的活性形式和非活性形式,有的专门结合生物活性形式的GLP-1。在开发和检测GLP-1相关治疗的过程中&#…

deepin 社区月报 | 2024年5月,deepin V23 RC 正式发布,校园联盟走进海外!

deepin(深度)社区5月总览 2024年5月,有1052位小伙伴加入了deepin(深度)社区大家庭,目前共有论坛伙伴154962位; 在5月,deepin V23 正式发布了RC版本,在本次发布的RC版本…

最新版点微同城源码34.7+全套插件+小程序前后端

带全套插件 自己耐心点配置一下插件 可以H5可以小程序 一款专属的同城服务平台对于企业和个人而言,无疑是拓展业务、提升服务品质的重要一环。点微同城源码搭配全套插件,以及完善的小程序前后端,将为您的业务发展提供强大支持 源码免费下载…

黑马程序员——Spring框架——day04——SpringMVC基础

目录: SpringMVC简介 背景SpringMVC概述技术体系定位快速入门 目的需求步骤代码实操测试工具 PostMan简介PostMan安装PostMan使用知识点总结请求与参数处理 请求路径 环境准备问题分析解决方式请求方式 环境准备技术分析参数 基本数据类型POJO嵌套POJO数组集合&…

【面试题-015】Redis的线程模型是什么 为什么速度快

redis面试题 Redis的线程模型是什么 为什么速度快? Redis是一个开源的、高性能的键值对(key-value)数据库。它之所以速度快,主要得益于以下几个方面的设计: 单线程模型: Redis的操作是单线程的&#xff…

【JAVA |总结】JAVASE基础大总结(含思维导图)

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈 ✨✨ 帅哥美女们,我们共同加油!一起…

Excel的VLOOKUP函数的用法

由于工作需要,最近用Excel的时候比较多,遇到一个需求,刚好需要用到VLOOKUP函数,结果由于对参数的理解不清晰,导致折腾了很久,都没达到想要的效果。所以,这里特此就遇到的坑做一个记录&#xff0…

libavformat 版本 - 讨论

https://chatgpt.com/share/c1bb8074-2398-4f41-b0c0-591c474ec588 1 需要libavformat库。 在win下版本是60 在Linux下版本是58 都可以编译通过。 这样可以吗? 在项目中同时使用libavformat的两个不同版本(Windows上使用版本60,Linux上使用版本58)是可以的,但需要注意一…

mybatis-plus使用教程

mybatis-plus使用配置 代码仓库:https://github.com/Kingsea442/mybatis-plus-demo 使用mybatis-plus简化数据库操作 1. 增加记录 Autowiredprivate UserMapper userMapper;Testpublic void testInsertUser() {User user new User();user.setUserName("wan…

c++实现机房预约管理系统

//computerRoom.h #pragma once #include <iostream> using namespace std;//机房类 class ComputerRoom { public:int m_ComId;//机房Id号int m_MaxNum;//最大容量}; //globalFile.h #pragma once//管理员文件 #define ADMIN_FILE "admin.txt" //学生文件 …

A+B Problem

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10^500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 代码 #include <iostream> #include <string> using namespace std; int k[10086]; i…

如何规划企业钓鱼邮件演练?

为什么要开展网络钓鱼演练 相信在甲方工作的信息安全工程师都知道&#xff0c;定期对公司员工进行安全意识培训是我们的工作内容之一&#xff0c;目的也很明确&#xff0c;通过安全意识培训来改变员工的不安全行为&#xff0c;降低人的风险。根据网络安全问题起源数据分析&…

内部协变量偏移问题(有无BN的代码比较)

1.什么是内部协变量偏移问题&#xff1a; 比如1000条数据&#xff0c;batch_size4&#xff0c;相当于要练250批次&#xff0c;当第一次批次的4条数据进行模型的训练时&#xff0c;此时网络学习动态已经养成&#xff0c;当第二批次进行训练时&#xff0c;极大可能导致差异较大&…

多模态融合目标检测新SOTA!推理速度提升2.7倍,实现最先进性能

为解决传统目标检测在复杂环境下效果不佳等问题&#xff0c;研究者们提出了多模态融合目标检测。 通过整合来自多个传感器的数据&#xff0c;充分利用不同传感器的优点&#xff0c;多模态融合目标检测能够更全面地捕捉目标信息&#xff0c;显著提高检测的准确性和鲁棒性&#…

弘君资本策略:短期博弈情绪边际降温 关注这四条线索

弘君资本指出&#xff0c;随着商场进入地产政策调查期&#xff0c;短期博弈情绪边沿降温&#xff0c;注重景气边沿改善和工业政策指向的结构性头绪。一是受供应侧节能降碳影响且可继续的提价链&#xff1b;二是获益于全球制造业向上的出口制造链&#xff1b;三是具有全球竞争力…

深度解析:5月17日房地产新政及其市场影响

5月17日&#xff0c;中国房地产市场迎来了一系列重要的政策调整&#xff0c;旨在从供需两端同时发力稳定房地产市场。地方政府收回闲置土地和收购库存商品房作保障房的“收储”政策&#xff0c;在中央层面是首次提及&#xff0c;央行也配套设立了3000亿元的保障性住房再贷款。这…

软设之希尔排序

假设有n个元素&#xff0c;先取一个小于n的整数d1作为一个增量&#xff0c;把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组中进行直接插入排序;然后&#xff0c;取第二个增量d2<d1重复上诉的分组和排序&#xff0c;直到所取得增量dt1&#…

隐藏饼图的legend,重写legend列表。

因为要实现的饼图效果较复杂,所以,需要重新写列表。 点击右侧列表的圆点,实现隐藏左侧饼图相应环状。 // 饼图,点击自定义列表,显示和隐藏饼图对应的环状数据<template> <div class="index_div"> <a-spin :spinning="aLoading">&l…

fastapi框架搭建的python项目,实现链接数据库,实现用户的登录和注册

好的&#xff0c;下面是重新整理后的完整实现&#xff0c;包含你的 database.py 配置。 1. 安装依赖 确保安装了 FastAPI, SQLAlchemy, psycopg2-binary, PassLib 和 PyJWT 库&#xff1a; pip install fastapi sqlalchemy psycopg2-binary passlib[bcrypt] pyjwt2. 配置数据…

一文速通23种设计模式——单例模式、工厂模式、建造者模式、原型模式、代理模式、装饰器模式、组合模式、组合模式、桥接模式、观察者模式、策略模式……

一文速通23种设计模式 写在前面 本文基于结城浩所著《图解设计模式》&#xff0c;其中所使用代码皆为Java版本。 随书代码下载地址-点击“随书下载” 全文15205字&#xff0c;全部读完需要约20分钟。 目录 一文速通23种设计模式写在前面 第一部分 适应设计模式迭代器模式 (…