java编程思想随笔(一)/子类方法和向上转型

Java 多态之向上转型和向下转型 最近学习jvm相关的知识,然后想到了多态,有点没想通,这里就写程序实验了一下,这中间自己写的备注太多,有点乱。这个时候梳理一下,对自己对别人也是一个良好的启发吧。 先建两个类,一个父类一个子类 父类: public class Parent01 { public void speak() { System.out.println("parenet speak");... 阅读详情
子类怎么使用方法:
(1)添加新方法。这些新方法并非父类接口的一部分。进行这种处理时,一般都是意识到父类不能满足我们的要求,所以需要添加更多的方法。这是一种最简单、最基本的继承用法,大多数时候都可完美地解决我们的问题。

(2)重写父类方法。尽管extends关键字暗示着我们“扩展”新功能(方法),但实情并非肯定如此。改变父类一个现有方法的行为(重写)。我们将其称作“改善”那个方法。改善一个方法,只需为子类的方法建立一个新定义即可。

java的目标是:“尽管使用的方法接口未变,但它的新版本具有不同的表现”。

向上转型:

继承是对新类(子类)和基础类(父类)之间的关系的一种表达,子类属于父类的一种类型

子类引用的对象转换为父类类型,例如Animal b=new Bird();  b.eat();//向上转型
这个对象的引用执行eat方法时,处理方式是先判断子类有无这个方法,有就执行子类方法体,无就执行父类方法体。
为何使用向上转型:
1,如果你是一个Cat,就这样做;如果你是一个Dog,就那样做;等等。若那样编写代码,就需检查一个Animal所有可能的类型(使用子类需要先初始化父类),如猫、狗等等。
2,所以使用另一种方式,只需说:“你是一种动物,我知道你能吃,即eat();请自己采取那个行动,并自己去控制所有的细节(猫的吃法,还是狗的吃法)。”
对象的引用b调用都是eat()方法,为何知道是狗的吃法还是猫的吃法?
将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作“多形性”(Polymorphism)<多态>
对面向对象的程序设计语言来说,它们用以实现多形性的方法叫作“动态绑定”。
运行期间会根据特定的机制去找到正确的方法主体,来负责对所有细节的控制,即由它们来实现到底是狗的吃法还是猫的吃法。
为了善用向上转型,应当减少或防止new Animal()这种实例方式:
1,为达到这个目的,需要把那个类变成“抽象”的——使用abstract 关键字。若有人试图创建抽象类的一个对象,编译器就会阻止他们。
2,亦可用abstract关键字描述一个尚未实现的方法,指出:“这是适用于从这个类继承的所有类型的一个接口方法,但目前尚没有对它进行任何形式的实现。”
抽象方法只能在一个抽象类里,继承了这个抽象类后,那个方法就必须实现,否则继承的类也会变成“抽象”类。通过创建一个抽象方法,我们不必再为那个方法提供可能毫无意义的主体代码。



第二次 PX4仿真环境搭建过程全记录 参考链接 https://blog.youkuaiyun.com/yanwumuxi/article/details/80097294 https://www.ncnynl.com/archives/201709/2013.html 一、安装依赖项 我们使用Debian / Ubuntu LTS 作为Linux的标准支持版本,但是也支持Cent OS 和 Arch Linux的发行版本。 权限设置 警告:永远... 阅读详情

相关推荐

Agent + 监控平台:自动诊断告警根因

根因分析、智能监控、AI Agent、告警风暴、异常检测、可观测性、故障诊断在现代分布式系统中,快速定位和解决问题是维持系统稳定性的关键。传统的监控系统虽然能够生成大量告警,但往往缺乏对告警根因的自动诊断能力,导致运维团队在告警风暴中难以快速定位问题。本文深入探讨了将AI Agent技术与监控平台结合,实现告警根因自动诊断的技术架构、理论基础和实现方法。我们将从第一性原理出发,分析根因诊断问题的本质,介绍基于Agent的智能监控系统设计,并通过实际案例展示其应用价值。文章同时涵盖了从理论到实践的全链路,包括

AIGC应用创新大全的博客 304

【多态】向上转型调用方法的规则

(1)可以调用父类中的所有成员(需遵守访问权限) (2)但是不能调用子类的特有成员。因为在编译阶段,能调用哪些成员是由编译类型来决定的。 (3)最终运行结果看子类(运行类型)的具体实现,即调用方法时,按照从子类开始查找方法。 ...

qq_43249582的博客 444

如何在离线的电脑上部署一个本地Deepseek(使用ollama)

例如,如果您的显卡显存为 16GB,官方推荐使用 32b 大小的 DeepSeek 模型。请根据您的硬件配置选择适合的模型版本,以获得最佳性能。首先我们需要将ollama和chatbox的安装包,Deepseek模型文件通过U盘或者光盘的形式导入到这台不能联网的电脑上。按照时间排序,找到最大的那个文件,就是gguf格式的模型,复制出来,改名为qwen2.5-coder0.5b.gguf。:基于开源模型(如 QWEN 和 LLAMA)微调,参数量从 1.5B 到 70B 不等,适合本地硬件部署。

qq_41854911的博客 1万+

java向上转型后方法变量详细使用规则(父类引用创建子类对象实例)

向上转型:就是把子类对象赋值给父类类型的变量。接下来用一个简单的例子来进行使用介绍: 创建父类 public class Person { public String name = "this is a people"; public String sing(Person person){ return "people"; } public String rap(){ return "rap"; } } 创建子类 pu

PANDA博客 1521

django drf 框架知识点(一)——serializer序列化器_用法全解

【django drf】序列化器:别名设置,全部参数序列化,自定义字段,只读只写,部分更新

qq_59344127的博客 1338

Word公式一键转MathType保姆级教程(附omml2mml.xsl报错终极解决方案)

本文提供Word公式一键转MathType的保姆级教程,重点解决常见的omml2mml.xsl报错问题。通过详细分析报错原因、官方解决方案实操步骤及转换后格式优化技巧,帮助用户高效完成公式转换,适用于科研论文和商业文档编辑。

weixin_30082367的博客 555

Java基础笔记整理---【09】面向对象程序设计-上转型对象

1.上转型对象:父类声明,子类实例化的对象叫做上转型对象 2.上转型对象使用规则: 1.上转对象不能操作子类新增的成员变量,失掉了这部分属性,不能使用子类新增的方法,失掉了一些功能。 2.上转型对象可以操作子类继承的成员变量,也可以使用子类继承的或重写的方法。 3.如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了子类重写的方法。因为程序在运行时知道,这个

吾人为学 672

【TC3xx芯片】TC3xx芯片STM介绍

TC3xx芯片STM介绍

qq_36056498的博客 2280

向上转型之后的方法调用问题

假设定义了class A; 在定义class B extends A; 我们可以这样定义一个对象:A a = new B(); 栈中的引用变量是A,堆中的实例变量是B。 将子类的实例,赋值给父类的引用。就是向上转型。 向上转型,在运行时,会遗忘子类对象中与父类对象中不同的方法。也会覆盖与父类中相同的方法–重写。(方法名,参数都相同) 所以a2,可以调用的方法就是,A中有的,但是B中没有的

u014388299的博客 5253

【8】mctp & pldm

异步会check seq,保证不丢包,虽然发一条req,不用等,但是不能发下一条req,等上条response回来后才能发下一条。TO(tag owner)=1是request,TO=0是response,但是异步通信response由0改为1。如下还有kcs,i3c,serial等。

持续更新ing... 1082

一文搞懂 JavaScript 模块化规范:CommonJS、AMD、ES6 Module

在现代 JavaScript 开发中,模块化是提升代码组织性和可维护性的关键。本文深入解析三种主流的模块化规范——CommonJS、AMD 和 ES6 Module。

Allen- 3479

【Java】上转型对象的说明

上转型对象 父类声明,子类实例化的对象就是上转型对象; 例如: public class Text{ public static void main(String[] args){ //父类声明,子类实例化的上转型对象 Father fs = new Son(); } } class Father{ /**超类(父类) 类体*/ } class Son extends F...

weixin_44136852的博客 1501

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Java对象类型向上转型和向下转型

基础知识:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类。在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象,所以子类可以继承父类中所有的属性和方法,包括private修饰的属性和方法,但是子类只是拥有父类private修饰的属性和方法,却不能直接使用它,也就是无法直接访问到它(子类可以通...

yuncaidaishu的博客 3万+

Camera2Demo

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

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java --向上转型和向下转型

一、简述   Java 转型主要是用在继承和接口实现的场景,Java 转型可分为向上转型和向下转型,区别如下: 向上转型:通过子类对象实例化父类对象,这属于自动转换。 向下转型:通过父类对象实例化子类对象,这属于强制转换。   只要记住一句话即可,父类引用指向子类对象,即<父类型> <引用变量名> = new <子类型>()。 二、向上转型   子类引用的对象转换为父类类型称为向上转型。向上转型后的父类引用只能调用父类的属性,若子类重写了父类的方法,则通过父类.

dj1540225203的博客 6749

java的向上转型

在java中,一个类可以继承另一个类,被继承的类叫做父类(超类),继承的类叫做子类。子类的创建过程中,会先对父类部分进行初始化(先创建一个父类对象),再对子类部分初始化,并且子类会继承父类所有的属性与方法(包括private,但是无法直接访问),同时子类可以对父类方法进行覆盖(详细见。在Cat的构造函数中,我们调用了其父类Animal的构造函数,并传入age参数。由于Cat继承自Animal类,所以Cat的方法eat重写了父类的eat,故输出“猫在吃鱼”。需要注意的是,在进行向上转型时,

m0_74131274的博客 5242

Java中向上转型的意义

在学习Java多态性相关内容时,我一直不理解向上转型的意义,为什么要发生向上转型呢? 向上转型 定义:子类对象赋值给父类类型的变量,通俗地说就是是将子类对象转为父类对象 class Person{ public void print() { System.out.println(&quot;人类&quot;); } } class Student extends Person{ public void pr...

Racheil的博客 4325

java向上转型不能调用子类独有的方法

向上转型只能够调用子类重写的方法,子类独有的方法在父类中根本没有定义,所以父类无法找到子类独有的方法。 package com.company; public class Main { public static void main(String[] args) { Person p = new Person("小明", 12); Student s =...

Learn From The Masters 4128

java父类子类向上转型和向下转型

Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。 什么叫父类引用指向子类对象? 从 2 个名词开始说起:向上转型(upcasting)、向下转型(downcasting)。 举个例子:有2个类,Father 是父类,Son 类继承自 Father。 第 1 个例子: Father f1 = new Son(); // 这就叫 upcasting (向上转型) // 现在 f1 引用指向一个Son对象 Son s1 = (Son)f1; // 这就叫 downca.

qq_39159736的博客 3078

JAVA的向上转型与向下转型(二)

java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) 、向下转型(downcasting). 举个例子:有2个类,Father是父类,Son类继承自Fathe

2万+

Java向上转型作用的理解

今天看到一道Java的练习题,题目如下 当时对于主函数中 Car car =(Car) new Benz(); 不是很理解,也并不知道有什么意义,因为如果仅仅写Car car = new Benz(); 程序运行结果是一样的。 在经过阅读书籍和查看别的博主写的关于向上向下转型的博客后,发现题目中这么...

Locksk的博客 4万+

java向上、向下转型的作用

Java向上、向下转型的作用 一、向上转型 这个是我们平时用的最多的,比如我们要定义某一个方法的时候,经常使用一个抽象类(父类)或者接口作为参数把他们的子类传递过去,在传递的过程中,这个子类默认就是进行向上转型的。下面通过三个类来描述这个转型的变化。 // 父类 public class Father { public void method(){ System.out.println("这是父类的方法"); } } // 子类 public class Son exte

weixin_43967401的博客 1861

关于Java多态下向上转型和向下转型的理解

刚接触Java,关于多态下向上转型和向下转型,以及父类和子类的调用很混乱,看了一天资料,终于搞明白了 关于多态向上转型和向下转型的要点 一、向上转型后子类不能调用自己的私有属性和私有方法,只能调用父类属性和重写父类方法 二、如果向上转型后想要调用子类的私有属性和方法,可以强制向下转型 Animal t1=(Animal)t 新创建了一个Animal类型的对象t1指向强制转换类型...

夜影无痕的博客 1579

(Java)向上转型和向下转型

向上转型和向下转型的使用详解

2402_83672777的博客 2254

Java向上转型和向下转型

高阶函数定义 函数可以作为参数被传递 函数可以作为返回值输出(返回一个函数) 高阶组件定义 高阶组件基本概念(High Order Component,HOC) 高阶组件是接收一个组件作为参数并返回一个新组件的函数 高阶组件是一个函数,并不是组件 高阶组件 ...

sysuzhyupeng的博客 3356

java向上转型之后对方法,变量的使用

向上转型,意思是指父类引用指向子类对象,这时候因为使用的是父类引用,所以方法都是以父类为主,如果子类对父类方法进行覆盖的话,这时候调用的会是子类的 public class People { public String name = "this is a people"; public String say(){ return "peo...

ck984690的博客 1603

对象的向上转型对象

如果动物类(Animal)是父类,老虎类(Tiger)是子类,那么可以说老虎是动物,这时,老虎将失去作为老虎独有的属性和功能。从人的思维方式来看,说“老虎时动物”属于上溯的思维方式,从而衍生出Java中的向上转型对象。 向上转型对象的声明 Animal a = new Tiger(); //或者 Animal a; Tiger b = new Tiger(); a = b; 这时,称对象a是...

practical_sharp的博客 2115
下一篇: java代码优化随笔(一)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值