07_面向对象高级_继承

07-面向对象高级(面向对象) 感谢你的路过,希望学生的笔记能给你一点微不足道的参考(1/100) Java面向对象思维导图,[完整Java体系的链接] 一,继承格式 1.1继承的由来?    多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要 继承那一个类即可。多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。通过继承,可以使多种事物之间形成一种关系体系 1.2继承是怎么定义的?     继承就是 阅读详情

继承

1. 认识继承

概念 => Java 中提供了一个关键字 extends,用这个关键字,可以让一个类和另一个类建起父子关系

特点 => 子类能继承父类的非私有成员(成员变量、成员方法)

对象 => 子类的对象是由子类、父类共同完成的

好处 => 减少了重复代码的编写,提高了代码的复用性。

public class HelloWorld {
    public static void main(String[] args) {
        B obj = new B();
        System.out.println(obj.i);  // 正确
    //  System.out.println(obj.j);  // 报错
        System.out.println(obj.x);  // 正确
    //  System.out.println(obj.y);  // 报错
    }
}

class A {
    public int i;
    private int j;
}

class B extends A {
    public int x;
    private int y;
}
2. 继承的注意事项

2.1 权限修饰符

修饰符在本类中同一个包下的其他类里任意包下的子类里任意包下的任意类里
private√
缺省(即:不写)√√
protected√√√
public√√√√

2.2 单继承

Java 是单继承的,Java 中的类不支持多继承,但是支持多层继承。

Object 类是 Java 所有类的祖宗类。我们写的任何一个类,其实都是 Object 的子类或子孙类。

2.3 方法重写

2.3.1 概念:

  • 当我们觉得父类中的某个方法不好用时,或者无法满足自己的需求时,我们可以在子类中重写一个方法名称、参数列表都和父类一样的方法,用它来覆盖父类的这个方法,这个就是方法重写。
  • 但是请注意,重写后,方法的访问,Java 会遵循就近原则。

2.3.2 注意事项:

  • 当我们重写时,在子类重写方法的头顶上加上@Override,就能使用Override注解,它可以指定 Java 编译器,检查我们方法重写的格式是否正确,代码可读性也会更好。
  • 子类重写父类的方法时,访问权限必须大于或等于父类该方法的权限(public > protected > 缺省)
  • 重写的方法返回值类型,必须与被重写方法的返回值一样,或者范围更小。
  • 私有方法、静态方法不能被重写,如果重写会报错。
public class HelloWorld {
    public static void main(String[] args) {
        B obj = new B();
        obj.printStr();  // Hello World
    }
}

class A {
    public void printStr() {
        System.out.println("Good");
    }
}

class B extends A {
    @Override  // 安全、可读性好
    public void printStr() {
        System.out.println("Hello World");
    }
}

2.4 访问其他成员:

  • 在子类方法中访问其他成员(成员变量、成员方法),也是依照就近原则。

  • 如果在子类中重写了父类的方法(或变量),但是又想访问原来父类的方法(或变量),可以使用 super 关键字,例如:super.方法名( ) (或 super.变量名)。同样的道理,也可以恰当使用 this 关键字进行相关操作。

2.5 子类构造器的super(…)与this(…):

  • 子类的含参或无参构造器,都会先调用父类的无参构造器,再执行自己的构造器
  • 原因是因为,子类构造器的第一行默认隐藏了一行代码,就是 super( ),当它被执行时,就会去找父类的无参构造器并运行
  • 而如果在父类中,构造器只有含参构造器,例如 Father( String name,int age ) {…} ,子类需要使用父类的构造器,但是子类构造器中默认只有 super( ) ,执行将会报错;这时我们需要自己写 super( ),例如这里需要写成 super( name , age )
  • 如果说 super(…) 是调用父类的构造器,那么,同样的道理,this(…) 是调用自己同级别的构造器,比如在子类 Son( String name ) 构造器里面写上 this( String name,int age= 18 ),则它会调用自己同级别的另一个构造器 Son( String name,int age ),这样的话,如果 Son( String name,int age ) 构造器里面有xxx代码的话,Son( String name ) 构造器就不需要重写一遍了!
class A {
    public A() {
        System.out.println("父类的无参构造器");
    }
}

class B extends A {
    public B() {
    //  super()     // 子类构造器(含参或无参),都默认隐藏了这行代码
    //  |           //  而这行代码作用是运行父类的构造器
    //  |           //  如果父类构造器需要参数,则我们需要自己写一个super( 括号里面填写父类需要的参数 )
    //  |
        System.out.println("子类的无参构造器");
    }
}

public class HelloWorld {
    public static void main(String[] args) {
        B obj = new B();
        // 运行结果:
        
        //  父类的无参构造器
        //  子类的无参构造器
    }
}
Python | 面向对象编程进阶OOP特征:继承与多态 本文介绍了Python面向对象编程中的继承和多态概念。在继承方面,阐述了单继承的语法和特点,子类可以继承父类的全部方法,同时保留自己的特性方法;讲解了Python支持的多重继承机制及其方法调用规则(广度优先);还说明了super()在继承中的使用方法。关于多态,指出Python采用"鸭子类型"而非强制类型检查,只要对象具有相应方法属性即可,不依赖特定继承关系。文章通过代码示例展示了继承的实际应用场景,如猫狗类继承动物类的案例,帮助理解面向对象编程的核心特性。 阅读详情

相关推荐

发票OFD格式转换成PDF

发票OFD格式转换成PDF

Be_insighted的博客 931

Day07-4【面向对象高级编程】多重继承

大家好,今天我们来聊聊继承,这是面向对象编程中的一个超级大招。通过继承,子类可以“继承”父类的所有功能,简直就是让你“轻松”扩展功能,何乐而不为呢?

max202011161630的博客 746

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

Day07-【Java SE进阶】面向对象高级一——static&继承特征及其注意事项

windows中的任务管理器也是单例模式,一个窗口就是对象。在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。懒汉式单例:拿对象时,才开始创建对象(延迟加载对象),不急用使用对象不频繁的情况。饿汉式单例:拿对象时,对象早就创建好了,例如下面。急用或单例对象被频繁使用。懒汉式单例:拿对象时,才开始创建对象(延迟加载对象)属于类,可以直接用类名访问,也可以用对象访问。

没有人的博客 1210

交流异步机VVVF变频控制simulink/matlab仿真分析

VVVF,是Variable Voltage and Variable Frequency的缩写, 意为:可变电压、可变频率,也就是变频调速系统。 VVVF控制的逆变器连接电机,通过同时改变频率和电压,达到磁通恒定(可以用反电势/频率近似表征)和控制电机转速(和频率成正比)的目的,所以多应用在变频器中,属于工业自动化领域。

Ezekiel_Mok的博客 4209

Oracle登录报错ORA-12560?5分钟搞定TNS协议适配器错误的完整修复指南

本文详细解析了Oracle登录报错ORA-12560(TNS协议适配器错误)的成因与解决方案。从基础服务检查到高级网络配置排查,提供了一套完整的修复流程,帮助数据库管理员快速解决连接问题,确保Oracle数据库的稳定运行。

weixin_29278805的博客 520

头歌平台Java实验:Java面向对象高级

2.实现Demo接口,完善接口中的show方法,打印输出 “实现了接口中的show方法”System.out.println("实现了接口中的show方法");1.编写MyInterface接口,含一个抽象方法sayHi,返回值为void。System.out.println("接口定义完成");根据提示,在右侧编辑器补充代码,完成接口的书写和接口的实现。实现了接口中的show方法。

jing13_13的博客 7518

数据库小技能:数据导入脚本

背景:版本大升级,从2.0升级到3.0 ,服务端开发语言从c#换到java语言。数据库类型从microsalft sql server 换到mysql。数据来源于微信,用于查询卡bin。

专注于计算机研发知识和资讯分享 773

Day07-1【面向对象高级编程】概述

在 Python 的面向对象编程(OOP)中,数据封装、继承和多态这三大基础概念是每个开发者都必须掌握的基本功。但是,掌握了这些之后,我们就进入了 Python 面向对象的“进阶关卡”。在这里,我们会遇到更加酷炫和强大的特性,比如多重继承、定制类和元类——这些概念让我们可以用更灵活、更强大的方式,写出令人惊叹的代码。

max202011161630的博客 891

【AI Guide】AI面试攻略只用看这一篇就够了!力争做全网最全的AI面试攻略——大模型(五)Adapter 微调

Adapter 微调(Adapter Fine-tuning)是一种高效的参数高效微调(PEFT)方法。相较于全参数微调(Full Fine-tuning),Adapter 在预训练模型的特定层插入轻量级的可训练模块,而冻结原始模型参数,从而减少计算和存储开销。是缩放因子,控制 Adapter 输出的影响程度。设 Transformer 层的隐藏状态为。为 Adapter 层的可训练参数,为非线性激活函数,如 ReLU。为冻结的预训练模型参数,

AI科研社 183

GEE:使用 CCDC 算法进行连续变化检测和分类

连续变化检测和分类(CCDC)算法是一种广泛应用于遥感数据分析的方法,可以用于检测土地覆盖变化、农作物生长状态的变化以及水资源的变化等。Google Earth Engine是一个强大的云端平台,提供了丰富的遥感数据和工具,可以用于执行各种类型的遥感数据分析。本文将介绍如何使用Google Earth Engine的CCDC算法进行连续变化检测和分类。

养乐多的博客 5677

2022-04-07 深入JavaScript高级语法三——面向对象

js面向对象

qq_41068717的博客 2585

PostgreSQL:Patroni 高可用架构,基于etcd的自动故障转移集群

本文详细介绍了基于Patroni和etcd构建PostgreSQL高可用集群的方案。Patroni作为外部守护进程,通过etcd分布式协调服务实现自动故障转移、主节点选举等关键功能,弥补了PostgreSQL原生缺乏自动故障转移的不足。文章涵盖核心架构(3节点PG+3节点etcd)、环境规划、etcd集群部署(包括配置验证)以及Patroni安装配置的关键步骤,特别强调了Patroni自动初始化PG实例、配置同步复制等生产级特性。该方案通过外部组件协同工作,在不修改PG源码的情况下实现了生产环境所需的高可用

数据知道的博客 2489

Java07-面向对象高级特性

第7章面向对象高级性特性 第7章 面向对象高级特性导航  7.1 继承   7.1.1 继承的特性   7.1.2 继承的关键词   7.1.3 Extends关键词   7.1.4 Implement关键词   7.1.5 super与this关键词   7.1.6 sinal关键词   7.1.7 构造器   7.1.8 总结  7.2 封装   7.2.1 封装的概念 ...

qq_37020594的博客 1217

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

day06-07面向对象(高级)

继承是面向对象三大特征之一。(封装,继承,多态)可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。在Math源码中 有个值这个值不能改变final关键字是最终的意思,可以修饰成员方法,成员变量,类final修饰的特点修饰方法:表明该方法是最终方法,不能被重写修饰变量:表明该变量是常量,不能再次被赋值修饰类:表明该类是最终类,不能被继承举例: dog类和cat类都会吃 能不能把吃这个方法提取到父类animal中?什么是抽象类?一种特殊的父类 里面可以写抽象方法什么是。

qq_74289024的博客 801

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java 面向对象高级

什么是多态?多态是在继承、实现情况下的一种现象,表现为:对象多态、行为多态。比如:Teacher和Student都是People的子类。

2303_82176667的博客 943

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java基础07面向对象

文章目录Java基础07面向对象面向过程&面向对象什么是面向对象类与对象的关系创建与初始化对象 Java基础07面向对象 面向过程&面向对象 1、面向过程思想 步骤清晰简单,第一步做什么,第二步做什么…. 面对过程适合处理一些较为简单的问题 2、面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题 对于描述复杂的事物,为了从宏观上

asdfghjkl_zth的博客 669

JAVA—面向对象编程高级

学习了一定基础后,开始更加深入的学习面向对象,包含static,final两个关键字,面向对象编程三大特征之继承和多态。以及对于抽象类,内部类,接口,枚举,泛型的学习。

Hismybestlove的博客 2384

java07:面向对象之继承

1、如何制作帮助文档 写一个类 加入文档注释 通过javadoc工具生成即可 格式:javadoc -d 目录 -author -version Demo1.java 2、API帮助文档 API:Application Programming Interface:应用程序编程接口,即:帮助文档 如何使用:查 Math类:关于数学的类 是针对数学进行操作的类 没有构造方法,因为他的成员都是静态的 产生随机数的方法 //[0.0, 1.0) public static doub

qq_43184270的博客 171

第07章:面向对象-进阶

略。

weixin_65644655的博客 907

【JS高级】js面向对象三大特性之多态_07

为什么子对象虽然都能调用toString()方法,但是不同类型的子对象调用toString()输出结果的格式和内容各不相同!这就涉及到多态,何为多态?同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果,这就是多态的基本含义。换句话说,给不同的对象发送同一个消息的时候,这些对象会根据这个消息分别给出不同的反馈............

青春木鱼的博客 733

js高级 第7天 文章目录 js高级 第7天 回顾 闭包 instanceof 继承 js继承分类 原型链继承 借用构造函数继承 call/apply用法

js高级 第7天 文章目录js高级 第7天回顾闭包instanceof继承js继承分类原型链继承借用构造函数继承call/apply用法 回顾 1.作用域概念 2.作用域链概念 3.作用域和执行上下文的区别: 3.1 作用域在函数定义时,确定 执行上下文在函数调用时,创建,函数体执行完毕之后,自动释放 3.2 作用域是静态,只要函数定义好,作用域就一直存在,且不会发生变化 执行上下是动态的,执行上下文在函数调用时,创建,函数体执行完毕之后,自动释放 3.3 联系: 全局执行上下文对象隶

FieeSingle的博客 161

企业真题(面向对象-进阶、面向对象-高级)

重载 重写使用abstract修饰。回答: abstract修饰符只能用于抽象类和抽象方法,不能用于属性、私有方法、构造器、静态方法和final的方法。这是因为abstract修饰符的作用是告诉编译器这个类或方法是抽象的,需要在子类中进行具体实现。属性和构造器是用来创建对象的,不需要进行具体实现,所以不能用abstract修饰。私有方法是只能在当前类中访问的方法,不需要在子类中进行具体实现,所以也不能用abstract修饰。

qq_51215835的博客 1017

07. 面向对象高级(5)_接口

接口定义了一组方法的签名,实现该接口的类必须实现这些方法。这就为类的实现提供了规范和契约,保证了代码的一致性。// 这里可以定义一些方法签名// 这里可以定义一些方法签名在实际开发中,Driver和Cooker接口可以定义具体的方法,实现这些接口的类必须按照接口的要求实现这些方法,确保了不同类在实现相同功能时的一致性。

Natural_Pride的博客 1261

【笔记】JavaScript高级篇——面向对象、原型、继承

原文链接:http://www.hansmkiii.com/2018/07/06/javascript-node-1/ " 面向对象、原型、继承 " 1、面向对象 1.1 什么是面向对象程序设计 为了了解 面向对象 与 面向过程 的区别,我们先看案例1。 案例1:一辆汽车以60km/h,在一条长度1200km的公路上行驶,求其行驶完全程...

weixin_34090562的博客 170

07面向对象编程

面向对象思想 [外链图片转存失败(img-9r67kzRh-1567685527122)(D:\每日总结\图片1.png)] 面向对象三大特性:封装,继承,多态 类和对象 如何定义一个类: 格式 [访问权限修饰符] class 类名 { 属性 (成员变量/ 全局变量) 行为 (成员方法) } 类的理解: (引用类型) 1.类是用来描述现实世界所有的事物,在Java中实现信息化 2.类是抽象的,抽...

宋先森????‍????的博客 236
上一篇: 06_面向对象高级_static
下一篇: 08_面向对象高级_多态
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值