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语句调用该类的父类的构造方法。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-04 09:58:24

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

JAVA学习(七):方法重载与方法重写、thiskeyword和superkeyword

方法重载与方法重写.thiskeyword和superkeyword 1.方法重载 重载可以使具有同样名称但不同数目和类型參数的类传递给方法. 注: 一是重载方法的參数列表必须与被重载的方法不同,而且这样的不同必须足以清楚地确定要调用哪一个方法: 二是重载方法的返回值类型能够与被重载的方法同样,也能够不同,可是仅仅有返回值类型不同不能表示为重载. 比如,最经常使用的println()方法在JDK的java.io.PrintStream中定义了十几种形式的重载,经常使用格式例如以下: public

Java学习之方法重载和方法重写(覆盖)比较

方法重载和方法覆盖 请带着下面两点来看文章: 覆盖即重写,覆盖不等于重载,即重写不等于重载. 覆盖(重写)蕴含继承性,而重载只能在本类中使用,不含继承. 方法名和参数列表的比较 方法覆盖中的方法名和参数 首先创建基类Shape: public class Shape {   public void draw() { System.out.println("Shape.draw()"); } } 子类Circle: public class Circle extends Shape {

Java笔记 —— 方法重载和方法重写

h2 { color: #4ABCDE } a { text-decoration: none !important } a:hover { color: red !important; text-decoration: underline !important } pre { border: solid 1px #CCCCCC; background-color: #F8F8F8; margin: 15px; overflow: auto; white-space: pre; font-siz

面向过程和面向对象的区别,方法重载和方法重写的区别

先有面向过程,而后退出面向对象 面向过程和面向对象两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想. 打个比方 蒋介石和毛主席分别是面向过程和面向对象的杰出代表,这样充分说明,在解决复制问题时,面向对象有更大的优越性. 面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是"菜""饭"分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是"可维护性"比较好,

AJPFX总结方法重载与方法重写的区别

方法重载在同一个类中,可以出现同名方法,但是这些同名方法的参数列表必须不同,这样定义方法叫做方法重载.方法重载的特点重载的注意事项重载与返回值无关重载与具体的变量标识符无关重载只与方法名与参数相关重载方法方法名必须相同重载方法参数必须不同:参数个数不同参数类型不同参数顺序不同 方法重写(方法重载是在一个类里) 严格检查方法的格式 @Override 方法重写 @Overload方法重载   在方法前添加概念当子类继承父类后,拥有了父类非私有的方法并可以直接调用.但是子类可以按照子类自身的逻辑重新

java面向对象编程(六)--四大特征之继承、方法重载和方法覆盖

一.继承 1.继承的概念 继承可以解决代码复用,让我们的编程更加靠近人类思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类.语法如下: class 子类 extends 父类 这样,子类就会自动拥有父类定义的某些属性和方法.另外,并不是父类的所有属性.方法都可以被子类继承.父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符属

Java方法继承、方法重载、方法覆盖小总结

转自:http://blog.csdn.net/cdsnmdl/article/details/3968688 ———————————————————————————————————— 1.方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法 在不同包时继承public/protected级别的变量和方法. 2.方法重载:如果有两个方法的方法名相同,但

Java学习之道:简述泛型通配符<? extends T>和<? super T>

<? extends T>和<? super T>含有JAVA5.0的新的概念.由于它们的外表导致了很多人误解了它们的用途: 1.<? extends T>首先你很容易误解它为继承于T的所有类的集合,这是大错特错的,相信能看下去你一定见过或用过List<? extends T>吧?为什么我说理解成一个集合是错呢?如果理解成一个集合那为什么不用List<T>来表示?所以<? extends T>不是一个集合,而是T的某一种子类的意思,记

疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同时这这里我们需要注意以下两点:  A.方法重载与返回值类型没有任何关系;  B.方法重载与是否有static修饰没有任何关系. 那我们如何才能确定到底调用的哪个方法呢?  A.主调者:明确是谁在调用这个方法,是类还是对象  B.方法名和形参:确定调用哪个方法(由方法名和形参共同决定) 例1: 1 p