方法重载

重写方法,重载方法,虚方法和抽象方法的使用

拈花ヽ惹草 提交于 2020-04-07 07:14:04
重写方法,重载方法,虚方法和抽象方法。 重写: 指子类重新实现父类的某些方法,以实现一些新的功能。重写的关键字是 override。并且重写的方法其签名是相同的。 重载: 指允许类中具有相同函数名的方法,但是其函数签名必须是唯一的(顺序,个数等)。重载的方法是在被调用的时候通过函数签名确定需要调用哪一个方法。 虚方法: 若一个实例方法的声明中含有 virtual修饰符,则称该方法为虚方法 (virtual method)。在调用一个虚方法时,该调用所涉及的那个实例的运行时类型 (runtime type)确定了要被调用的究竟是该方法的哪一个实现。 抽象方法: 抽象方法是没有实现的虚方法。抽象方法只能存在于抽象类中。抽象方法使用 abstract修饰符进行声明。 抽象方法只提供函数的声明,至于函数的实现,必须要在子类中通过重写实现。 重写和虚方法 :C#中的多态性在实现时主要是通过在子类(派生类)中重写基类的虚方法或函数成员来实现的,那么这里就遇到两个概念,一个是虚方法,另一个是重写方法,而这两个方法也是多态中最重要的两个概念,下面分别对它们进行讲解。 1.虚方法 虚方法就是允许被其子类重新定义的方法,在声明时,需要使用virtual修饰符。 注意: (1)virtual修饰符不能与static、abstract或者override修饰符同时使用; (2)由于虚方法不能是私有的,所以

重写方法,重载方法,虚方法和抽象方法。

China☆狼群 提交于 2020-04-07 05:20:59
重写方法,重载方法,虚方法和抽象方法。 重写是指子类重新实现父类的某些方法,以实现一些新的功能。重写的关键字是 override。并且重写的方法其签名是相同的。 重载是指允许类中具有相同函数名的方法,但是其函数签名必须是唯一的(顺序,个数等)。重载的方法是在被调用的时候通过函数签名确定需要调用哪一个方法。 虚方法,若一个实例方法的声明中含有 virtual 修饰符,则称该方法为虚方法 (virtual method) 。在调用一个虚方法时,该调用所涉及的那个实例的运行时类型 (runtime type) 确定了要被调用的究竟是该方法的哪一个实现。 抽象方法,抽象方法是没有实现的虚方法。抽象方法只能存在于抽象类中。抽象方法使用 abstract 修饰符进行声明。 抽象方法只提供函数的声明,至于函数的实现,必须要在子类中通过重写实现。 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Override_Test { class Program { static void Main(string[] args) { //抽象类不能实例化 fatherClass father = new childClass(); childClass child

java方法、方法重载

回眸只為那壹抹淺笑 提交于 2020-04-07 00:30:23
java方法 一、Java方法 1. 方法声明 [修饰符1 修饰符2 ...] 返回值类型 方法名(形式参数列表) { 语句... } 2. 方法调用 对象名.方法名(实际参数); 1 public class TestMethod { 2 public static void main(String args[]) { 3 printInfo(); 4 int num1 = 2020; 5 int num2 = 30; 6 System.out.printf("%d + %d = %d", num1, num2, add(num1, num2)); 7 } 8 9 public static int add(int a, int b) { 10 return a + b; 11 } 12 13 public static void printInfo() { 14 System.out.println("步平凡的博客>>>"); 15 } 16 } 二、Java方法重载 1. 方法重载与方法的区别   就上方的加法函数add()而言,若想要完成三个数或多个数的加法时,此时就用到方法重载了。   方法重载可以理解为方法的拓展。 2. 方法重载的条件   方法重载的名字与原方法名相同,但形式参数列表不同,此处不同体现为参数类型、参数个数。   更好的理解,看看下面代码吧~~~

C++ 函数重载

孤街浪徒 提交于 2020-04-03 18:39:33
但在C++中,允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载 需满足 函数参数 : 个数不同 / 参数类型不同,参数顺序不同 才能构成重载 。 //C语言不支持函数重载 下面写法是错误的 extern"C"{ intsum (inta, intb ) { returna + b; } intsum (inta,intb ,intc ) { returna + b + b ; } } //参数个数不同 构成函数重载 void test (int a ,int b ){ } void test (int a) { } //参数类型不同 构成函数重载 void test (int a) { } void test (float a) { } //参数顺序不同,同一方法参数类型不同,构成重载 void test1 (float a ,int b ) { } void test1 (int b , float a ) { } //参数顺序不同,同一方法参数类型相同,无法构成重载 报错: 重复定义 void test2 (int a ,int b ) { } void test2 (int b , int a ) { } //返回值类型无法构成重载 报错: 重复定义 void test3 (int a ,int b ) { } int test3 (int a

Java基础语法:day04 【 Idea、method】

南笙酒味 提交于 2020-03-31 09:39:17
一、 开发工具IntelliJ IDEA 1、创建包和类 小贴士:所谓包,就是文件夹,用来对类文件进行管理 2、IDEA 常用快捷键 3、IDEA 修改快捷键 在IDEA工具中, Ctrl+ 空格 的快捷键,可以帮助我们补全代码,但是这个快捷键和Windows中的输入法切换快捷键冲突,需要修改IDEA中的快捷键。 File ->Settings->keymap->Main menu->code->Completion->Basic 二、复习一下此前学习的方法基础入门知识 前面的课程中,使用过嵌套循环输出矩形,控制台打印出矩形就可以了,因此将方法定义为 void ,没有返回值。在主方法 main 中直接被调用。 示例代码 package day04; public class Demo01Method { public static void main(String[] args) { printMethod(); } public static void printMethod() { for (int j = 0; j < 5; j++) { for (int i = 0; i < 20; i++) { System.out.print("*"); } System.out.println(); } } } 运行结果 "C:\Program Files\Java\jdk-13.0

JAVA基础-----方法重载

家住魔仙堡 提交于 2020-03-25 02:51:02
overload--方法重载 方法重载 1. 概念: 一个类中的一组方法 有相同方法的名字 不一样的参数列表 这样的一组方法 参数的不同体现在哪里? 参数的个数 参数的类型 参数的顺序 2. 作用:为了让使用者便于记忆与调用 只需要记录一个名字 执行不同的操作 3. 自己也可以设计重载 通过对象.方法名字 调用方法 可以直接通过方法的名字定位方法 如果方法名字一致 通过放的参数列表类型 来定位方法 如果没有与传递参数类型一致的方法,可以找一个参数类型可进行转化(自动);例如char 和 int 4. 在JDK1.版本之后 出现了一个新方法 int... x 动态参数列表 类型固定 个数可以动态 0--n都可以 x本质上就是一个数组 有length属性 有[index] 动态参数列表的方法 不能 与数组类型的方法构成方法重载 因为本质一样的 动态参数列表 可以不传参数 相当于0个 数组的方法必须传递参数 动态参数列表在方法的参数中只能存在一份儿 且必须放置在方法参数的末尾 public class Overload public void teat(int... x){//x本质上是数组 int[] x={1,2,3,4,5,6} System.out.println("执行了tese方法带动态列表"); for (int i =0;i<x.length;i++){ System

Java面向对象

狂风中的少年 提交于 2020-03-23 02:30:50
Java继承 Java通过extends关键字来声明一个类从另外一个类继承而来。 class 父类 { } class 子类 extends 父类 { } 示例: //公共父类public class Animal{  private String name;  private int id;  public Animal(String myName, int myid){    name = myName;    id = myid;  }  public void introduction(){    System.out.println("Hello,everyone! My name is " + id + "," + name +".");  }} //子类 public class Penguin extends Animal { public Penguin(String myName, int myid) { super(myName, myid); } } public class Mouse extends Animal { public Mouse(String myName, int myid) { super(myName, myid); } } 继承的特性: 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法

重载与重写

柔情痞子 提交于 2020-03-22 13:51:11
3 月,跳不动了?>>> 重载:一个类里面具有相同方法名,不同的参数列表。与返回值与修饰符无关。分派方法版本是根据静态类型决定,属于静态分派。可以理解为一个类的多态 重写:子类重写父类方法。重写父类方法需要:与父类同样的方法名,同样的参数列表,返回值类型可以是子类,修饰符限制范围不能比父类的小,抛出的异常只能是父类方法中的异常子类与子集。分派方法版本是根据实际类型类型决定,属于动态分派 来源: oschina 链接: https://my.oschina.net/u/3870422/blog/3208230

java8 ArrayList源码阅读

拥有回忆 提交于 2020-03-21 03:26:45
转载自 java8 ArrayList源码阅读 本文基于jdk1.8 Java Collection库中有三类: List,Queue,Set 其中List,有三个子实现类: ArrayList,Vector,LinkedList http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/util/ArrayList.java 实现原理 transient Object[] elementData; // 存放元素的数组 private int size; // 实际存放元素的数量 ArrayList底层是使用一个Object类型的数组来存放数据的,size变量代表List实际存放元素的数量 add,remove,get,set,contains操作 get和set方法,都是通过数组下标,直接操作数据的,时间复杂度为O(1) public boolean contains(Object o) { return indexOf(o) >= 0; } public int indexOf(Object o) { // 遍历所有元素找到相同的元素,返回元素的下标, // 如果是元素为null,则直接比较地址,否则使用equals的方法比较 if (o == null) { for (int i = 0

Java程序的方法设计

喜欢而已 提交于 2020-03-17 22:26:41
Java程序的方法设计 本文关键字:Java、方法定义、方法设计、方法调用、方法重载 一、方法的定义 我们在学习Java编程以后接触到的第一个程序就是"Hello World”,在这当中涉及到两个主要的结构:类和main方法,当时我们只是说明了main方法是程序的入口,那么当我们想要自己定义一个方法时应该如何下手呢? 1. 概念与作用 首先我们要明确方法的概念和作用,从名称上来说,方法也可以被称为函数,是用来解决同一类的问题的。从代码的结构上来说,定义方法可以减少重复的代码,也能使得整个程序结构更加清爽。 假如我们需要计算两个数的加和 public class Test{ public static void main(String[] args){ // 定义两个变量,so easy int a = 10,b = 5; int c = a + b; System.out.println(c);// 15 } } 如果我们需要多次反复执行同一个逻辑,那么就会产生很多相同的代码 public class Test{ public static void main(String[] args){ int a = 10,b = 5; int c = 20,d = 10; // 可以看到,虽然变量名称不同,但是计算的逻辑是相同的 // 如果某一段代码反复出现