重载函数

C# 函数重载 示例 求圆的面积

依然范特西╮ 提交于 2020-04-08 13:24:05
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication { class Circle { private const float PI = 3.141526F ; // 1.没有任何已知条件 public static double Area() { Console.WriteLine( " 空空如也! " ); return 0 ; } // 2.已知圆心坐标 public static double Area( int x1, int y1) { Console.WriteLine( " 这是一个圆点,坐标为({0},{1}) " ,x1,y1); return 0 ; } // 3.已知半径 public static double Area( double r) { double theArea; theArea = PI * r * r; return theArea; } // 4.已知圆心坐标和半径 public static double Area( int x1, int y1, double r) { Console.WriteLine( " 这是一个圆点在({0},{1})半径为{2}的圆

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

拈花ヽ惹草 提交于 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

C++重载操作符学习

爷,独闯天下 提交于 2020-04-02 09:38:15
1、通过连接其他合法符号可以创建新的操作符。 2、除了函数调用操作符operator()之外,重载操作符时使用默认实参是非法的。 3、重载操作符的形参数目(包括成员函数的隐式this指针)与操作符的操作数数目相同,函数调用操作符可以接受任意数目的操作数。 4、作为类成员的重载函数,其形参看起来比操作数数目少1.作为成员函数的操作符有一个隐含的this形参,限定为第一个操作数。 5、如果不定义,编译器将会合成的操作符有:赋值操作符(=)、取地址操作符(&)、逗号操作符(,)、&&和||。重载之后的&&和||不再具有短路特征。 6、选择成员或非成员实现的几点经验原则: l 赋值(=)、下标([])、调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些操作符定义为非成员函数将在编译时标记为错误。 l 像赋值一样,复合赋值操作符通常应定义为类的成员。与赋值不同的是,不一定非得这样做,如果定义非成员符合赋值操作符,不会出现编译错误。 l 改变对象状态或与给定类型紧联系的其他一些操作符,如自增、自减和解引用,通常应定义为类成员。 l 对称的操作符,如算术操作符、相等操作符、关系操作符和位操作符,最好定义为普通非成员函数。 7、不能滥用转换函数,应该只有一个内置类型的转换 下面是自己写的实现: #ifndef INT_H #define INT_H #include

函数重载(overload)和函数重写(override)

為{幸葍}努か 提交于 2020-03-30 08:12:26
1. 前言:   在C++中有两个非常容易混淆的概念,分别是函数重载( overload )和函数重写( overwirte )。虽然只相差一个字,但是它们两者之间的差别还是非常巨大的。   而通过深入了解这两个概念的区别,会对C++的面向对象机制有一个更深入的理解。 2 函数重载(overload function) 2.1 函数重载的概念: 2.1.1 概念: 当函数具有相同的名称,但是 参数列表不相同 的情形( 包括参数的 个数不同 或参数的 类型不同 ),这样的 同名而不同参数 的函数之间,互相被称之为重载函数。 2.1.2 基本条件: 函数名必须相同; 函数参数必须不相同,可以是参数类型或者参数个数不同; 函数返回值可以相同,也可以不相同。(备注: 但是如果函数的名称和参数完全相同,仅仅是返回值类型不同,是无法进行函数重载的。 ) 2.1.3 注意: 只能通过不同的参数样式进行重载,例如:不同的参数 类型 ,不同的参数 个数 ,或者不同的参数 顺序 ; 不能通过访问权限、返回类型、抛出的异常不同而进行重载; 重载的函数应该在相同的作用域下。 2.1.4 函数重载实例判断: 以下的集中写法,分别表示了哪些是重载的,哪些不是重载的。 (1) void func1( int arg1); (2) void func1( double arg1); (3) void func1(

c++ 重载函数

末鹿安然 提交于 2020-03-30 05:59:14
出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数(overloaded function)。 Record lookup(const Account&); // find by Account Record lookup(const Phone&); // find by Phone Record lookup(const Name&); // find by Name 这三个函数的函数名相同,但却是三个不同的函数。编译器根据所传递的实参类型来判断调用哪个函数。 不能仅仅基于不同的返回类型而实现函数重载。 有些看起来不相同的形参表实质上是相同的: // each pair declares the same function Record lookup(const Account &acct); Record lookup(const Account &); // parameter names are ignored typedef Phone Telno; Record lookup(const Phone&); Record lookup(const Telno&); // Telno and Phone are the same type Record lookup(const Phone&, const Name&); // default

C++ Primer 有感(重载操作符)

▼魔方 西西 提交于 2020-03-25 09:20:00
1.用于内置类型的操作符,其含义不能改变。也不能为任何内置类型定义额外的新的操作符。(重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义) 2.重载操作符,操作符的优先级、结合性或操作数数目不能改变。 注意:重载操作符时使用默认实参是非法的 。 3.重载操作符并不保证操作数的求值顺序,不再具备短路求值特性。 4.作为类成员的重载函数,其形参看起来比操作数数目少1。作为成员函数的操作符有一个隐含的this形参,限定为第一个操作数。( 重载一元操作符如果作为成员函数就没有(显式)形参,如果作为非成员函数就有一个形参。类似的,重载二元操作符定义为成员时有一个形参,定义为非成员函数时有两个形参 ) 5.重载逗号、取地址、逻辑与、逻辑或等操作符通常不是好做法。这些操作符具有有用的内置含义,如果我们定义了自己的版本,就不能再使用这些内置含义。 6. 将要用作关联容器键类型的类定义<操作符。关联容器默认使用键类型的<操作符。即使该类型将只存储在顺序容器中,类通常也应该定义相等(==)操作符和小于(<)操作符,理由是许多算法假定这些操作符存在。如果类定义了相等操作符,它也应该定义不等操作符!=。 7.为类设计存在操作符的时候,是将操作符设置为类成员还是普通黑成员函数。下面是一些指导原则

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的属性,方法。 子类可以拥有自己的属性和方法