JAVA学习(七):方法重载与方法重写、this关键字和super关键字

方法重载与方法重写、this关键字和super关键字

1、方法重载

重载能够使具有相同名称但不同数目和类型参数的类传递给方法。

注:

一是重载方法的参数列表必须与被重载的方法不同,并且这种不同必须足以清楚地确定要调用哪一个方法;

二是重载方法的返回值类型可以与被重载的方法相同,也可以不同,但是只有返回值类型不同不能表示为重载。

例如,最常用的println()方法在JDK的java.io.PrintStream中定义了十几种形式的重载,常用格式如下:

public void println(int i) {....}

public void println(double i) {....}

public void println(String i) {....}

/**********************************************************
 * "方法重载"的使用方法及其示例代码*/

public class OverloadRewrite
{
	void num(int i){
		System.out.println("接收到的是int类型参数,其值="+i);
	}
	void num(float j){
		System.out.println("接收到的是float类型参数,其值="+j);
	}
	void num(String k){
		System.out.println("接收到的是String类型参数,其值="+k);
	}
	public static void main(String [] args) {
		OverloadRewrite a=new OverloadRewrite();
		a.num(100);
		a.num(100.20f);
		a.num("Hello!");

	}
}

2、方法重写

当子类继承父类时,可以拥有父类中的成员方法和成员变量,在子类创建独有的成员即可。但是,如果创建一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写或方法覆盖。

注:

一是返回值类型与参数列表必须与被重写的返回值类型和参数列表相同,否则不能称为重写;

二是访问修饰符的限制一定要大于被重写方法的访问修饰符(public > protected > default > private);

三是重写方法一定不能抛出新的检查异常或者比被重写方法声明更加宽泛的检查型异常。例如,父类的一个方法声明了一个检查异常IOException,在重写这个方法时,就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

/**********************************************************
 * "方法重写"的使用方法及其示例代码*/

public class OverloadRewrite
{
	public String Name;
	public String Address;
	public OverloadRewrite(String name,String address) {	//构造方法
		this.Name=name;
		this.Address=address;
	}
	public String toString() {	//重写toString
		return "我的名字是:"+Name+",产地是:"+Address;
	}
		public class sichuancai extends OverloadRewrite{	//	继承
		public String Detail;
		public sichuancai(String name,String address,String detail){	//构造方法
			super(name, address);	//super调用父类相应的构造方法
			this.Detail=detail;
		}
	}
//	public String toString() {	//重写toString
//		return "我的名字是:"+Name+",产地是:"+Address+",特点是:"+this.Detail;
//	}
	public static void main(String [] args) {
		OverloadRewrite food=new OverloadRewrite("面条", "意大利");
		System.out.println(food);
		sichuancai sichuan=food.new sichuancai("麻辣烫", "成都", "麻辣和香辣");
		System.out.println(sichuan);
	}
}

3、this关键字

this关键字可用于在任何实例方法内指向当前对象,也可指向对其调用当前方法的对象,或者在需要当前类型对象引用时使用。

注:当一个类的属性名或成员变量与访问该属性的方法参数名相同时,则需要使用this关键字来访问类中的属性,以区分类的属性和方法中的参数。

4、super关键字

由于子类不能继承父类的构造方法,因此要调用父类的构造方法,必须在子类的构造方法的第一行使用super()。

super()方法会调用父类相应的构造方法,完成子类对象的部分初始化工作。

注:程序在以下两种情况下需要使用super()关键字:

一是在类的构造方法中,通过super语句调用该类的父类的构造方法。

二是在子类中访问父类中的成员。

时间: 2025-01-02 07:57:20

JAVA学习(七):方法重载与方法重写、this关键字和super关键字的相关文章

Java语言入门教程(十四):Java语言中方法重载与方法覆盖

很多时候,某个Java类中有多个类似的方法.如Math类中,计算绝对值的方 法就会有多个,因为对不同数据类型的数计算方式不同.比如对float,int, long,double各类型的计算方式各不相同,那么Math类中就应该设计4个求绝对 值的方法,分别对每种类型进行计算.在这种情况下,最好的方式就是设计4个 同名,但是不同参的方法,如下所示(请参见API帮助文档): abs(double a) Returns the absolute value of a double value. abs(

举例讲解Java编程中this关键字与super关键字的用法_java

this总要有个事物来代表类的当前对象,就像C++中的this指针一样,Java中的this关键字就是代表当前对象的引用. 它有三个主要的作用: 1.在构造方法中调用其他构造方法.       比如有一个Student类,有三个构造函数,某一个构造函数中调用另外构造函数,就要用到this(),而直接使用Student()是不可以的. 2.返回当前对象的引用. 3.区分成员变量名和参数名. 看下面的例子: public class Student { private String name; pr

php面向对象的方法重载两种版本比较_php技巧

多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数. PHP4 中仅仅实现了面向对象的部分的.简单的功能,而 PHP5 以后对对象的支持就强大的多了. 对于多态的实现,PHP4 只支持覆盖(override),而不支持重载(overload).但我们可以通过一些技巧来"模拟"重载的实现. PHP5 虽然可以支持覆盖和重载,但重载在具体实现上,和其他语言还有较大的差别. 1,在 PHP4 中"模

C#基础知识之方法重载总结

1.首先解释一下什么是方法重载?    方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术. 这里所说的参数不同是指以下几种情况: ①  参数的类型不同 ②  参数的个数不同 ③  参数的个数相同且类型不同时,它们的先后顺序不同 需要注意的是:方法的重载跟返回值没有任何的关系!   错误示例: public void test(int i1,string s1) { } public void test(int i2,string s2) {

Javascript中的方法和匿名方法实例详解_javascript技巧

本文实例讲述了Javascript中的方法和匿名方法.分享给大家供大家参考.具体分析如下: Javascript方法(函数) 声明函数 以function开头,后跟函数名,与C#.java不同,Javascript不需要声明返回值类型.参数类型.没有返回值就是undefined. 举个例子更清楚:  无参数无返回值的方法: function f1(){ alert('这是一个方法'); } f1();//调用方法 无参数有返回值的方法: function f2(){ return 100; }

详解Java编程中super关键字的用法_java

通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程度上可以说它类似于C语言中的全局函数和全局变量.但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的. 好了,现在开始讨论this&super这两个关键字的意义和用法.在Java中,this通常指当前对象,super则指父类的.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的,当

java之super关键字用法实例解析_java

本文实例讲述了java中super关键字的用法.分享给大家供大家参考.具体方法分析如下: super关键字:在java中使用super来引用基类的成分. 程序代码如下: class FatherClass{ public int value; public void f(){ value = 100; System.out.println("FatherClass.value:"+value); } } class ChildClass extends FatherClass{ pri

浅谈java实现重载的方法_java

重载(重新载选方法): java允许在一个类中,存在多个方法拥有相同的名字,但在名字相同的同时,必须有不同的参数,这就是重载,编译器会根据实际情况挑选出正确的方法,如果编译器找不到匹配的参数或者找出多个可能的匹配就会产生编译时错误,这个过程被称为重载的解析. 重载包括:普通方法的重载和构造方法的重载 方法:即函数(文中我们统称之为"方法"),是一个固定的一个程序段,或称其为一个子程序,它在可以实现固定运算功能.而且,同时还带有一个入口和一个出口,所谓的入口,就是函数所带的各个参数,我们

java必学必会之方法的重载(overload)_java

一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样.只要这两方面有其中的一方面不一样就可以构成方法的重载了. package cn.galc.test; public class TestOverLoad { void max(int a, int b) { System.out.println(a > b ? a : b); } /* * int max(int a, int b) { * r