方法的重载和方法的重写

方法的重写Overriding和重载Overloading是Java多态性的不同表现。

方法的重载:

什么是方法的重载呢? 

方法的重载是指方法名相同,参数类型,参数个数,参数顺序至少有一个不相同的一类方法。在方法体的内部不能使用private、protected、public定义局部变量。被final修饰的形参不能修改其引用中存在的值。

注意:1.如果只有访问修饰符权限改变不构成方法的重载。

             2.如果只有返回值类型不同不构成方法的重载。

 下面来举一个例子:

public class MethodTest {
String name="成某某";
public String draw(){
	System.out.println("画了一个圆");
	return "yuan";
}
public void draw(int i){
	System.out.println("画了一个正方形");
}
public int draw(String s){
	return s.length();
}
public int draw(int b,String s){
	System.out.println("draw:"+s+"--"+b);
	return b;
}
public int draw(String s,int b){
	System.out.println(s+"   "+b);
	return b;
}
private void test(final int b){
    //b++;  这样写会报错,被final修饰的形参不能改变它的值。
	int i=0;
	i++;
	
}
}

 观察上述的实例:public void draw(int i) {  System.out.println("画了一个正方形"); }    如果只改变它的访问权限,改为缺省,

写为:     void draw(int i) {  System.out.println("画了一个正方形"); }     这样写不能通过编译,会报错,不构成方法的重载。如果只改变它的返回值类型,写为:   public int draw(int i) {  System.out.println("画了一个正方形");   return   i;}      也不能通过编译,会报错,不构成方法的重载。

方法的重写(方法的覆盖):

 什么叫方法的重写?

当一个子类要继承父类时,它如果需要重写父类的方法的话必须符合一定的规则。

方法重写的规则:1.子类的方法必须与父类的某个方法的方法名,返回值类型以及参数类型、个数、顺序完全相同。若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。

                                2.子类的方法不能缩小父类方法的访问权限。

                                3.子类的方法不能抛出比父类方法更多的异常。

                                4.不能重写标志为final因为final表示最终的意思,不能被修改。

                               5. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常。 

                               6. 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常 。但是可以不抛出异常。

下面我来举一个例子:

public class MethodTestSon extends MethodTest{
public void draw(int a){
	System.out.println("子类画了一个圆");
}
public int draw(String s){
	return 0;
}
public int draw(int a,boolean b){
	return a;
}
public int draw(int a,String s){
	return a;
}
public void go(){
	System.out.println("你走了");
}
public void work(final MethodTest m){
	System.out.println(m.name);
	m.name="成某某来了";
	System.out.println(m.name);
	//m=new MethodTest();    被final修饰的对象,不能改变它的引用,也就是不能改变它的地址;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值