Java 重载、重写和隐藏的区别

C++ 重载、重写(覆盖)、重定义(隐藏) 与 Java 重载、重写(覆盖)、隐藏的区别 C++: 一、重载(overload) 指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。 (1)相同的范围(在同一个作用域中) ; (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 (5)返回值可以不同; 二、重写(也称为覆盖 override) 是指派生类重新定义基类的虚函数,特征是: (1)不在同一个作用域(分别位于派生类与基类) ;... 阅读详情

前言:
最近复习Java基础时,发现之前有个知识点(隐藏)被我忽略了,一直弄成了覆盖的意思,害,说明基础不够牢固。自己测试了一遍果然发现了隐藏的不一样的地方,这里自己就懒得写总结了,转载别人写的比较好的一篇。

原文:https://www.cnblogs.com/weichunguang/p/7646933.html

一、重载(Overload)

注意:为了正确的区分重载和重写,请各位务必记清重载(Overload)和重写(Override)的英文。

(1)重载定义:表示两个或多个方法的名字相同,但方法的参数不同。方法参数不同有两层含义:A、参数的个数不同;B、参数的类型不同。

[java] view plain copy

public void run(String name, int count)  
{  
System.out.println(count + " " + name + " " + "are running.");  
}  
public void run(int count, String name)  
{  
System.out.println(count + " " + name + " " + "are running.");  
}  

请思考以上两个方法是否构成了重载?

(2)重载发生的时机:重载是发生在同一个类内部的两个或多个方法之间。

(3)方法的返回类型对重载没有任何影响!即,对于方法名字和参数都相同的两个方法,如果他们的返回类型不同,这种语法格式是错误的,大家可以试一试。那么,也就是说,只要是重载返回类型一定相同。否则为两个不同的方法。如下代码,这是两个不同的方法。

[java] view plain copy

public void run()  
{  
System.out.println("dog is running");  
}  
public int run(String name, int count)  
{  
System.out.println(count + " " + name + " " + "are running.");  
return 1;  
}  

(3)构造方法之间的重载:一个类中有多个构造方法,那么它们一定是重载的。

(4)重载方法之间的调用:对于普通方法的重载,重载的方法之间是可以直接调用的,如下代码一。

但是对于重载的构造方法之间的调用,需要使用this()关键字。A、this()括号中参数表示目标构造方法所接收的参数;B、对this()的调用必须是构造方法的第一条语句。如下代码二。

public int run(String name, int count)  
{  
System.out.println(count + " " + name + " " + "are running.");  
return 1;  
}  
public void run(int count, String name)  
{  
run(name , count);  
System.out.println(count + " " + name + " " + "are running.");  
}  



public Dog()  
{  
this("金巴");  
System.out.println("你好世界,我是一条狗!");  
}  
public Dog(String name)  
{  
System.out.println("你好世界," + "我是一条" + name + "狗!");  
}  

二、重写(Override)

(1)重写定义:子类与父类的方法的返回类型一样,方法名称一样,参数一样,这样我们就说子类与父类的方法构成了重写关系。

补充:在重写中,我们一直没提到权限的问题(public、protected、private),使用private修饰的方法是不能够进行重写的,也不能够被继承,所以private和多态扯不上关系。在同一个包下,构成重写关系,父类和子类的方法,权限可以是public和public、protected和protected、protected和public,但不可能是public和protected,即权限可以扩大但不可缩小。

(2)重写发生的时机:重写发生在父类与子类之间。

(3)构造方法时不能重写的,如果您理解是构造方法的作用,就知道构造方法为什么不能重写。

(4)在重写时,子类重写的方法调用父类被重写的方法时,可以使用super.父类方法的方式调用,其中此语句不必放在第一行。如下代码所示:

class Animal  
{  
public void run()  
{  
System.out.println("animal is running");  
}  
}  
class Dog extends Animal  
{  
//override  
public void run()  
{  
System.out.println("dog is running");  
super.run();  
}  
}  

三、隐藏(Hide)

(1)提到隐藏,就不得不提到一个关键字–static,static是静态的意思,具体用法意义,各位可以去查相关的资料。这里我想说的,static方法在继承中的特殊性!
(1)子类不能重写(Overriding)父类的静态方法,只能隐藏(Hiding)父类的静态方法。

(2)什么叫隐藏父类的静态方法呢?就是说父类的静态方法和子类的静态方法是同时存在的,具体调用的是哪个方法,是要看调用的方法的引用是什么类型的引用,如果是父类型的引用,调用的就是父类的静态方法,如果是子类型的引用,调用的就是子类的静态方法。【这里面有些多态(Polymorphism)的知识,不懂的可以问我哈!】具体区别我们可以看一个例子,这个例子来自官方文档。

public class Animal   
{  
public static void testClassMethod()   
{  
System.out.println("The class" + " method in Animal.");  
}  
public void testInstanceMethod()   
{  
System.out.println("The instance " + " method in Animal.");  
}  
}  

The second class, a subclass of Animal, is called Cat:

public class Cat extends Animal   
{  
public static void testClassMethod()   
{  
System.out.println("The class method" + " in Cat.");  
}  
public void testInstanceMethod()  
{  
System.out.println("The instance method" + " in Cat.");  
}  
public static void main(String[] args)   
{  
Cat myCat = new Cat();  
Animal myAnimal = myCat;  
Animal.testClassMethod();  
myAnimal.testInstanceMethod();  
}  
}  

隐藏:父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的。

隐藏现象发生在子类和父类之间,隐藏是针对父类中成员变量和静态方法而言。

当子类声明与父类中成员变量具有相同的变量名的变量时,则实现了对父类中成员变量的隐藏;

当子类声明了与父类中的静态成员方法具有相同的方法名,参数列表和相同的返回值时,则实现了对父类中静态方法的隐藏。

注意:当发生隐藏的时候,声明类型是什么类,就调用对应类的属性或者方法,而不会发生动态绑定

方法隐藏只有一种形式,就是父类和子类存在相同的静态方法

属性只能被隐藏,不能被覆盖

子类实例变量/静态变量可以隐藏父类的实例/静态变量,总结为变量可以交叉隐藏

隐藏和覆盖的区别:

被隐藏的属性,在子类被强制转换成父类后,访问的是父类中的属性

被覆盖的方法,在子类被强制转换成父类后,调用的还是子类自身的方法

因为覆盖是动态绑定,是受RTTI(run time type identification,运行时类型检查)约束的,隐藏不受RTTI约束,总结为RTTI只针对覆盖,不针对隐藏

特殊情况:

1.final修饰的属性可以被隐藏,但是不能被赋值,即不能用=来赋值,网上说final属性不能被修改,这个说法不准确,因为对于引用类型的变量用final修饰后,它只是不能被指向其他对象,但是可以改它自身的值,可以用ArrayList测试,final属性可以在运行的时候进行初始化,但是不能不出现初始化语句

2.final修饰的方法不能被覆盖,可以被重载

3.final修饰的类不能被继承

4.private 方法隐式添加了final

实例:

SuperClass类:

package com.yilong.test.scjp;  

    public class SuperClass {  
    public static int i = 1;  
    public int j = 2;  
    public final int k = 3;  
    public static void method1() {  
    System.out.println("SuperClass Method1");  
    }  
    public void method2() {  
    System.out.println("SuperClass Method2");  
    }  
    public final void method3() {  
    System.out.println("SuperClass Method3");  
    }  
    }  
rk3568 rockit编译测试 编译rockit不能使用SDK默认编译kernel的交叉编译,需要采用编译buildroot的,而编译buildroot的编译器SDK并没有存放,需要编译过buildroot之后才可以用。命令参数相关解析可查阅代码,这里提醒一下-l参数,这是程序运行计数,默认是100,时间很短,基本上显示画面一闪而过,一度以为是程序哪里出问题了,改用-l 1000,画面显示时间加长。此处跳过系统,单领出来编译。rockit组件包在4.10版本需要手动编译,奈何我的版本怎么都编译不了,后来改用5.10版本才编译通过。 阅读详情

相关推荐

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。

用友T3提示,年度[UFDATA_002_2017]并不存在,导致无法备份迁移。现在都win11了某个年度账套不存在怎么办?

雨季余静的博客 3562

java 什么是隐藏_【细说Java】Java的重写与隐藏

重写与隐藏,有些书上或介绍上可能名称不一样,但都大差不差。以前只了解重写,隐藏也听说过,但没有详细了解过,趁现在,整理一下这两方面的内容吧。首先,先说一下概念方面的东西。重写重写:子类继承了父类,在子类中声明了与父类具有相同的方法名称与参数列表,并且具有相同的返回类型(或者子类的返回类型是父类的子类型)的实例方法,那么就说子类重写了父类中的同名方法(但父类的方法必须在子类中可见),而重写则是实现多...

weixin_36068199的博客 605

各种AI的调试日记——辅助工作篇

记录使用各种AI(语言大模型)的心得和总结

m0_73056986的博客 1390

重载、重写、隐藏

是指在同一可访问区内,被声明的多个具有不同参数列表的同名函数(参数的类型,个数,顺序不同),实际调用时根据参数列表确定调用哪个函数,重载不关心函数的返回类型。特点: (1)相同的范围(在同一个类中) ;(2)函数名字相同;(3)参数不同;(参数的类型,个数,顺序不同)(4)不关心函数返回类型例如: 重载的表现形式有: 参数个数不同 参数类型不同 参数类型个数都不同.重载原理: C++代码在编译时会根据参数列表对函数进行重命名 例如void Swap(int a, int b)会被重命名为_Swap_int_

kk阿彬 1223

人工智能大模型原理与应用实战:AI模型转换为API的步骤和方法

传统的开发模式下,构建复杂的软件系统是非常费时费力的,而通过云计算、微服务等技术手段可以实现快速部署、弹性扩展的能力。在这种背景下,越来越多的公司将重点转移到研发人员的产品思维上,希望能够将自己的AI模型转换为一个可供他人调用的API接口。但是对于许多从事AI领域的研发人员来说,如何将自己的AI模型转换为API是一个比较棘手的问题。在这篇文章中,作者将从AI模型转换为API的过程分为以下几个步骤:AI模型准备阶段——模型选择、数据准备、模型训练。

AI天才研究院 2598

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(一)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包

慕羽★的博客 3936

重载、重定义、重写(覆盖)、隐藏的定义与区别

今天在学习Java中《类和对象》这一章时,我看到了熟悉的重载和重定义,突然想到自己在学习C++时也遇到过这些概念,而且当时还没搞懂,仔细一想,我好像现在也没搞懂。 于是我立马扔下手中的Java,离开自习室,在优快云上查询这两个概念的区别,这不查不知道,一查吓一跳,我又碰到一个非常熟悉的大兄弟----重写,和从未听过的一个老哥们----隐藏。 这四个混在一起。完了,更懵了。 但是功夫不负有心人啊,还是让孩子搞懂了这几个玩意,我可真是个小天才! 那我们来看下这四个概念的内容以及区别吧 ...

m0_53133879的博客 4367

3步!Spring Boot+OCR引擎秒提身份证/营业执照?手把手教你从零实现!

OCR技术革新文档识别效率 本文演示了如何利用Spring Boot+Tesseract OCR+OpenCV构建自动化文档识别系统。相比传统人工录入,OCR技术可实现: 5秒极速提取身份证/营业执照关键信息 精准识别中文文本(准确率90%+) 正则过滤自动匹配结构化数据 技术要点: OpenCV图像预处理(灰度化+二值化) Tesseract多语言OCR识别 正则表达式精准提取证件号码 效率提升达100倍,错误率降低90%,适用于金融、政务等需要批量处理证件的场景。

java专栏 903

java中的隐藏和重写分别是指什么_Java 重载、重写和隐藏的区别

Java 重载、重写和隐藏的区别一、重载(Overload)注意:为了正确的区分重载和重写,请各位务必记清重载(Overload)和重写(Override)的英文。(1)重载定义:表示两个或多个方法的名字相同,但方法的参数不同。方法参数不同有两层含义:A、参数的个数不同;B、参数的类型不同。publicvoidrun(Stringname,intcount){System.out.pri...

weixin_32172693的博客 723

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 670

新鲜出炉,ECCV2024.9.25 首次提出基于 YOLO 目标检测的无源域自适应

本文提出了首次使用YOLO系列单发探测器的SFDA方法。本文方法采用了一个带有学习的、目标领域特定的增强和一种新的通信机制的师生框架来稳定训练,减少了对模型选择中带注释的目标数据的依赖,这对现实世界的应用至关重要。SF-YOLO 优于所有基于Faster R-CNN的SFDA方法,甚至一些使用源数据的基于UDA yolo的方法。

m0_63294504的博客 2676

Java重载、重写、覆盖、隐藏的总结

重载Overloading 发生要素如下: 1. 在同一作用范围内(同一个类,同一个接口) 2. 方法名必定相同 3. 形参组成不同(类型、个数均不相同 or 个数相同但类型不同 or 类型相同个数不同) 错误的认识: 1. 方法名相同,形参组成完全相同,返回类型不同也算重载(方法重载要求方法具有不同的签名:形参组成,而返回值并不算作签名内容,故不参与重载的选择) 2. abstr...

UVB-76电台 3527

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

重载、重写(覆盖)、隐藏的区别--Java

重载 overload 大家都熟悉java的重载以及实现,在一个类中同一个函数以多种不同的形态出现,即函数的参数个数或者类型不一样。 例子 System.out.println(); 下面简称SOP SOP(String str) SOP(int number) SOP(char ch) SOP(double num) 覆盖(重写) overwrite 覆盖也是大家熟悉

小三哥的随手记 553

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java中的隐藏和重写分别是指什么_java中重载、覆盖和隐藏三者的区别分析

重载:方法名相同,但参数不同的多个同名函数注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和int a() ,如果调用a(),出现歧义)3.main方法也是可以被重载的覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即...

weixin_35899510的博客 202

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java和C++中“隐藏/覆盖/重写/重载” 的区别

重载:重载是一个类的各个函数之间的,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 重写:重写是父类子类之间的。 这里主要谈函数的重写和隐藏 首先,重写和隐藏是互斥的,相对的。父子中都存在的函数,不是重写就是隐藏。 重写和隐藏的本质区别是:重写是动态绑定,根据运行时引用所指向的对象的实际类型来决定调用相关类

xiaoyi971520_3的博客 661

Java重写(Override)、重载(Overload)、隐藏(Hide)

Java重写(Override)和重载(Overload) 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IO...

weixin_41924879的博客 1149

java方法的重载、覆盖和隐藏,以及多态的区别

java方法的重载、覆盖和隐藏,以及多态的区别    java方法的重载、覆盖和隐藏重载 overloading大家都熟悉java的重载以及实现,在一个类中同一个函数以多种不同的形态出现,即函数的参数个数或者类型不一样。例子 System.out.println(); 下面简称SOPSOP(String str)SOP(int number)SOP(char ch)SOP(doub

popkiler的专栏 1736

java基础——重写、隐藏、重载

方法签名:方法名+参数列表(参数类型、个数、顺序) 重写: 子类重写父类方法,仅限于实例方法。成员变量和静态方法不能被重写,只能被隐藏。 重写原则: 1.方法名相同,参数类型相同。 2.子类返回类型小于等于父类返回类型。 3.子类异常小于等于父类异常。 4.子类访问权限大于等于父类访问权限。 重写方法可以改变其他方法修饰符如final,synchronize,native等。不管被...

Mutou_ren的博客 289

JAVA重写与重载的区别

Java的重写和重载机制 Java的重写和重载是两种在Java中经常提到的两组概念,它们在各个方面都有着很大的不同。   重载 每个类型成员都有一个唯一的签名。方法签名由方法名称和一个参数列表(方法的参数的顺序和类型)组成。只要签名不同,就可以在一种类型内定义具有相同名称

teedry的专栏 4986

java子类隐藏_有人可以告诉我JAVA中子类继承父类中,什么叫做子类方法的隐藏,重载和隐藏?...

classtest{publicintfun(inta){}publicstringfun(stringa){}publicfloatfun(inta,stringb){}publicfloatfun(stringa,intb){}voidstringfun(floata){}voidstringfun(inta){}//该方法不是重载}前五个方法互为重载...

weixin_33274728的博客 673

107. Java 继承 - 总结:方法重写与隐藏

本文总结了Java中方法重写与隐藏的核心规则:1)子类实例方法可以重写超类实例方法,调用时使用子类实现;2)子类静态方法会隐藏同名超类静态方法,调用取决于类类型;3)静态方法与实例方法同名会引发编译错误。文章通过示例代码详细说明了三种情况,并区分了方法重载(参数不同)与重写的区别,强调重载被视为新方法。最后指出掌握这些规则有助于避免继承体系中的常见错误。

yaoxin521123的博客 848

java的重载、覆盖和隐藏的区别

原文章出处:http://www.cnblogs.com/xiaoQLu/archive/2013/01/07/2849869.html 重载:方法名相同,但参数不同的多个同名函数   注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同      2.返回值和异常以及访问修饰符,不能作为重载的条件(因为对于匿名调用,会出现歧义,eg:void a ()和

夏末 404

java隐藏与覆盖_java中方法的隐藏和覆盖问题?

ok()方法在继承时候发生覆盖(重写)了吗?发生了。在子类B中的ok()方法拥有父类方法相同的方法名和参数列表(signature),所以在这里发生了重写。调用B类对象的ok()方法会print "b",父类方法被覆盖。如果是重写了,那定义一个b类的对象还能再调用a类继承的ok()函数吗?可以。方法就是利用super关键字。@陆萌萌 的答案已经解释了。a类的ok()函数是在子类中隐藏了吗?能告诉我...

weixin_39922147的博客 170

Java必备基础十——类的继承详解——final、super关键字——重写与重载的详细区别

首先明确,Java语言有三大特性: 封装性:详见本章 继承性:Java中类和类可以继承,即可共用一套代码。例如所有动物类由动物共同特点来抽象描述好,针对某一类动物如猫既有动物的共同特点又有自身的特点,那么猫类可以继承动物类,然后在在自身的类中第一新的属性和方法。去2前3234 传入 从 多态性:当一个类中定义的属性和方法其它类继承后,可以在其它类表现出不同的类型和行为,即同名的属性和方法在不同的类中有不同的意义。 一、什么是继承 二、 ...

Pandafz的博客 1406

关于Java中方法的重载与重写

问: 什么是方法重写?什么是方法重载?成员变量可以被重写吗? 方法重载(Overloading):在一个类中,有两个及以上的方法,它们方法名称相同,但参数列表不同,这些方法互相称为重载方法。 方法重写(Overriding):在子类和父类中,若有两个方法的名称和参数列表均相同,此时子类的方法将覆盖父类中的方法,称为方法重写。 区别与联系: \ 重载(Overloading) 重写(Ove...

Deecyn's Blog 336
上一篇: HashMap的抽丝剥茧
下一篇: String的抽丝剥茧
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值