JAVA中重写和实现的区别_Java中重载和重写的区别
Java中重载和重写的区别
1.1重载是什么
Overloading 方法重载是让类以统一的方式处理不同类型数据的一种手段,多个同名函数同时存在,具有不同的参数个数/类型
1.2为什么用重载
重载是一个类中多态性的一种表现
Java的方法重载就是在类中创建多个方法,他们具有相同的名字,但具有不同的参数和不同的定义
调用方法是通过传递给他们的不同参数个数和参数类型决定具体使用哪个方法,这就是多态性
1.3重载的规则
1) 必须具有不同的参数列表
2) 可以有不同的返回类型,只要参数列表不同就行了
3) 可以有不同的访问修饰符
4) 可以抛出不同的异常
5) 对于继承来说,如果某一方法在父类中访问权限是private,那么就不能让子类对其进行重载,如果定义的,也只是定义了一份新方法,不会达到重载的效果
1.4代码展示
public class Dog {
Dog()
{
this.bark();
}
void bark()//bark()方法是重载方法
{
System.out.println("no barking!");
this.bark("female", 3.4);
}
void bark(String m,double l)//注意:重载的方法的返回值都是一样的,
{
System.out.println("a barking dog!");
this.bark(5, "China");
}
void bark(int a,String n)//不能以返回值区分重载方法,而只能以“参数类型”和“类名”来区分
{
System.out.println("a howling dog");
}
public static void main(String[] args)
{
Dog dog = new Dog();
//dog.bark();
//dog.bark("male", "yellow");
//dog.bark(5, "China");
2.1重写是什么
重写英文override,也叫覆盖,从字面就可以知道,它是覆盖了一个方法并且对其重写,以求达到不同的作用。
2.2为什么用重写
对我们来说最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法
2.3重写规则
1) 参数列表必须完全与被重写的方法相同,否则不能城区为重写二是重载
2) 返回类型必须一直与被重写的方法的返回类型相同,否则不能成为重写二是重载
3) 访问修饰符的限制一定要大于被重写方法的访问修饰符(public)protected》default》private)
4) 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常,例如,父类的一个方法申明了一个检查异常IOException,在重写这个方法就是不猛抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常
5) 被重写的方法不能为private,否则在其子类中只是定义了一份方法,并没有对其进行覆盖
2.4代码展示
public class Base
{
void test(int i)
{
System.out.print(i);
}
void test(byte b)
{
System.out.print(b);
}
}
public class TestOverriding extends Base
{
void test(int i)
{
i++;
System.out.println(i);
}
public static void main(String[]agrs)
{
Base b=new TestOverriding();
b.test(0)
b.test((byte)0)
}
}
两者比较
重载 overloading
1) 参数类型,个数,顺序至少有一个不同
2) 不能重载只有返回值不同的方法名
3) 存在于父类和子类,同类中
重写override
1) 方法名,参数,返回值相同
2) 子类方法不能缩小父类方法的访问权限
3) 子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)
4) 存在父类和子类之中
5) 方法被定义为final不能重写
JAVA中重写和实现的区别_Java中重载和重写的区别相关推荐
- Java传统的io和nio区别_Java中IO和NIO的本质和区别
简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1.0开始就 ...
- java null和 的区别_java中null和的区别
null和""的区别 问题一: null和""的区别 String s=null; string.trim()就会抛出为空的exception String s ...
- java io和nio的区别_Java中IO和NIO的本质和区别
导读热词 简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1 ...
- java中集合的区别_Java中的集合与集合之间的区别
Java收集框架用于操纵对象的收集.收集框架包含多个包装器类,便利类,用于传统实现的类,例如vector和Hashtable,收集接口等. 集合是Java集合框架中的接口.它分为两部分-Java ut ...
- java堆和栈的区别_JAVA中堆和栈的区别
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...
- dma和通道的区别_Java中IO和NIO的本质和区别
简介 终于要写到java中最最让人激动的部分了IO和NIO.IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是http://java.io包中的所有类,他们是从jav ...
- java中继承类 student 类例子_java中student类继承问题
完成下面父类和子类的定义: (1)定义Student类,放入stu包中. 属性包括学号.姓名.英语成绩.数学成绩.计算机成绩和总成绩. 方法包括构造方法.get方法.set方法.toString方法( ...
- java中char是几个字节_Java中char占用几个字节
在讨论这个问题之前,我们需要先区分unicode和UTF. unicode :统一的字符编号,仅仅提供字符与编号间映射.符号数量在不断增加,已超百万.详细:[https://zh.wikipedia. ...
- java语言中的数据是如何定义_java中的数据类型
java中的数据类型 java语言的数据类型包括两种,基本数据类型和引用数据类型. 定义 基本数据类型:变量名指向具体的数值. 引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值. ...
最新文章
- Mssql 之 定期备份数据库
- 读《不要等到毕业以后》有感①
- 《高效程序员的修炼》 读书笔记
- ecg 幅度_ECG信号中一些运动伪差的讨论
- 深度学习:从MLP到朴素的神经网络
- [导入]C++ GUi 选择
- 路径总和 II—leetcode113
- IOS视频播放器的制作
- 【DP】小明在边塞(jzoj 2147)
- viewcube翻译_view cube是什么意思
- Kubernetes常见操作
- uc浏览器邀请码_阿里云Teambition网盘收到邀请码,上传下载不限速!!!
- php里面get和post请求,php中GET和POST请求发送几种方法总结
- Android开源框架ViewPageIndicator和ViewPager实现Tab导航
- 记一次YUV图像分析(二)
- vue动态加载页面组件
- 程序人生:程序员如何和老板谈升职加薪
- android sdk 配置出错error: unknown argument --licenses
- 源于旗舰大厂的设计艺术——飞利浦Fidelio L3简评
- 搭建ruby + jekyll + github pages