方法重载

java中重载(overload)与重写(override)的区别

浪子不回头ぞ 提交于 2020-02-01 11:40:12
方法重载(overload): 方法重载就是在一个类中可以创建多个方法,它们具有相同的名字,但是具有不同的参数和不同的定义,调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,这就是多态性,重载的时候方法名一样,参数类型和个数不一样,返回值类型可以相同可以不同,可以有不同的访问修饰符,可以抛出不同的异常. 方法重写(override): 父类与子类之间的多态性,对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写,在java中子类可以继承父类中的方法,而不需要重新编写相同的方法,但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法重写,方法重写又称方法覆盖 若子类中的方法与父类中的某一方法具有相同的方法名,返回类型,参数列表,则新方法将覆盖原有的方法,如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类 子类函数的访问修饰权限不能小于父类的 重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常(父类的异常宽泛性比子类的广) 来源: https://www.cnblogs.com/xilichenbokeyuan/p/6385400.html

java 重写与重载

江枫思渺然 提交于 2020-02-01 11:33:29
一.方法重写: 参数列表必须完全与被重写方法的相同; 返回类型必须完全与被重写方法的返回类型相同; 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 父类的成员方法只能被它的子类重写。 声明为final的方法不能被重写。 声明为static的方法不能被重写,但是能够被再次声明。 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。 构造方法不能被重写。 如果不能继承一个方法,则不能重写这个方法。 二.方法重载: 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。 最常用的地方就是构造器的重载。 重载规则 被重载的方法必须改变参数列表(参数个数或类型或顺序不一样); 被重载的方法可以改变返回类型; 被重载的方法可以改变访问修饰符;

[Java复习]重载、覆盖、继承、多态

久未见 提交于 2020-02-01 08:02:47
重载 :相同的方法名但是参数列表不同 覆盖 :方法名、参数列表、返回值完全相同、但是函数体内容不同。 继承 :子类使用父类的方法 多态 :是动态绑定。即 用基类的引用指向子类的对象。一个行为有不同的表现形式 举例: public class Dogs extends Animal{     public int Legs(){ //对父类方法的覆盖       return 4; } } public class Frogs extends Animal{     public int Legs(int i){ //对父类方法的重载        return i;     } } public class Animal{   public int Legs(){     return 0;   }   public int Legs(Dogs dog){ //重载     return 4;   }   public int Legs(Frogs frog){ //重载     return 0;   }   public void show(){     System.out.println("is animal");   } } public static void main(String[] args){   Dogs mydog = new Dogs(); mydog

java方法的重载

白昼怎懂夜的黑 提交于 2020-01-31 03:22:37
1.方法的重载是指方法名称相同,参数类型和个数不同,调用的时候按照参数的类型和个数不同完成不同的方法体的执行. 实现方法的重载. 运行结果 通过运行结果可以看出,根据传入参数类型和个数的不同,执行不同的方法体 注意:方法重载时只看方法名称、参数类型及个数,而无需关注方法的返回值类型。 错误的重载 package lesson10; public class TestDemo7 { public static void main(String[] args) { System.out.println("两整数相加:"+add(10,20)); // System.out.println("三个整数相加:"+add(10,20,30)); System.out.println("两浮点型数相加:"+add(10,20)); } // public static int add(int x, int y, int z) {//方法重载 // return x+y+z; // } public static int add(int x,int y){ //返回值不同,错误 return x+y; } public static double add(int x, int y) {//返回值不同,错误 return x+y; } } 可以发现,这时候除了方法的返回值类型不一样外

Java 重写(Override)与重载(Overload)

╄→гoц情女王★ 提交于 2020-01-31 01:23:43
重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。 在面向对象原则里,重写意味着可以重写任何现有方法。实例如下: TestDog.java 文件代码: class Animal { public void move ( ) { System . out . println ( " 动物可以移动 " ) ; } } class Dog extends Animal { public void move ( ) { System . out . println ( " 狗可以跑和走 " ) ; } } public class TestDog { public static void main ( String args [ ] ) { Animal a = new Animal ( ) ; // Animal

2020-01-29

拜拜、爱过 提交于 2020-01-30 07:31:46
自己的一些面试总结 线程 多线程 线程的创建方式 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和future创建线程 4.使用线程池例如用Executor框架 线程怎么启动 Thread.start();//开启线程 Thread.run();当普通方法的方式调用 线程的状态(就绪、运行、阻塞、结束) 1.新建状态:当用new操作符创建一个线程时,线程还没有开始运行,此时线程处在新建状态 2.就绪状态:一个新创建的线程并不自动开始运行,要执行线程,必须调用线程start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态 3.运行状态 当线程获取cpu时间后,他才进入运行状态,真正开始执行run()方法 4,阻塞状态:线程运行过程中,肯峨眉号各种原因进入阻塞状态; sleep方法进入睡眠状态 线程在等待某个触发条件 线程的同步 同步就是发出一个功能调试时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 异步与同步相对,当一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。 线程、进程的区别 线程和进程都是一个时间段的描述,是cpu工作时间段的描述。 进程的颗粒太大

方法的重载与重写

时光怂恿深爱的人放手 提交于 2020-01-27 14:18:51
方法的重载(overloading) : 在 同一个类 中,定义了 方法名相同 ,但 形参列表不同 的方法。 注意: 1. 形参列表不同指参数个数,参数类型,参数顺序 2.与返回值类型,权限修饰符,抛出的异常无关 3.对修饰符没有要求(可以是public,private等),方法的异常类型和数目不会对重载造成影响 方法的重写(overiding): 发生在父子类中, 子类对父类非私有的方法进行重写 , 方法名,参数类型和返回值类型全部相同,子类方法的修饰符大于等于父类的,子类抛出的异常应小于等于父类的。 重写的好处在于 子类可以根据需求实现父类非私有的方法 。 权限修饰符 权限修饰符 本类 同包 子类 其他 private √ default √ √ protected √ √ √ public √ √ √ √ 来源: CSDN 作者: 曰业而安 链接: https://blog.csdn.net/duan196_118/article/details/104092007

表达式和运算符

孤街醉人 提交于 2020-01-27 00:05:16
表达式和运算符 表达式 具有一个或多个操作数, 零个或多个运算符, 可以计算且结果为单个值、对象、方法或命名空间的代码片段。 如 i++; 其中 i 为操作数, ++ 为运算符 运算符 按操作数可以分为 一元运算符(++, new) 二元运算符(+, -, *, /) 三元运算符(条件运算符?:, 唯一一个三元运算符) 按操作类型可以分为 类型 符号表示 基本运算符 X.y, f(x), a[x], x++, x--, new, typeof, checked, unchecked, default, delegate 一元运算符 +, -, !, ~, ++x, --x, (T)x 乘除运算符 *, /, % 加减运算符 +, - 移位运算符 <<, >> 关系和类型检测运算符 <, >, <=, >=, is, as 相等运算符 ==, != 逻辑运算符 &, ^, | 条件运算符 &&, ||, ?: 赋值运算符 =, +=, -=, *=, /=, %=, &=, 其优先级从上到下依次增强, 相同优先级情况下, 左结合运算符从左到右顺序计算, 右结合运算符从右到从顺序计算. 在所有运算符当中, 赋值运算符和三元运算符是右结合运算符, 其他所有二元运算符都是左结合运算符. 建议多用括号进行优先级标记. 另一点需要注意的是,相等运算符对于值类型数据的判断

java学习笔记--重载

╄→尐↘猪︶ㄣ 提交于 2020-01-26 02:04:34
package myJavaNotes; /** *@author 康爸爸 *@date: 2020年1月24日 上午02:17:38 * */ public class MethodOverloading { public static void main(String[] args) { // TODO Auto-generated method stub /*方法:一段用来完成特定功能的代码片段,类似于其他语言的函数 方法声明格式: [修饰符1 修饰符2 ....] 返回值类型 方法名(形式参数){ java语句块; ...... } 方法的调用: 对象名.方法名(实际参数列表) * */ /* 形式参数:在方法声明时用于接收外界传入的数 * 实际参数:调用方法时实际传给方法的数据 * 返回值:方法在执行完毕后返回给调用它的环境的数据 * 返回值类型:事先约定的返回值数据类型,如:无返回值,必须显示指定为void * * */ //通过对象调用普通方法:需要类先new一个对象,通过对象调用方法 MethodOverloading mol = new MethodOverloading(); int sum1 = mol.add(1,2);//先用类new对象,通过对象调用方法 System.out.println(sum1); int result1 = sub(5,2);/

JavaOOP继承

本秂侑毒 提交于 2020-01-25 00:00:40
一.继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 eg: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 类的继承语法 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: class 父类 { } class 子类 extends 父类 { } eg: //动物父类 public class Animal { private String name; private int id; public Animal(String myName, int myid) { name = myName; id = myid; } public void eat(){ System.out.println(name+"正在吃"); } public void sleep(){ System.out.println(name+"正在睡"); } public void