重难剖析:Java中的重写

Java中的重写是继承中的一个重难点,这里为了方便聊重写先简单回顾一下继承

继承

为了减少相似代码冗余的一种方法,子类可以继承父类的部分代码(除去特殊部分外的所有)
eg:

public class Father {
	String name;
	String mobile;
	String address;
	public void eat() {
		System.out.println("正在吃饭。。。。");
	}//父类
}
public class Son extends Father {    //子类
	
	public static void main(String[] args) {
		Son son=new Son();
		son.eat();
	}
}
结果:正在吃饭。。。。

:1. object是所有类的父类
2. 只能继承一个,且会继承父类的父类(可以有爷爷,但不能有两个爸爸)
3。若class前加上final则其不能有子类
3.private 引领的不能被子类继承
5.子类可以继承父类成员变量,子又声明了同样的成员变量时,用子(就近),不区分类型

重写

当继承的代码在子类中使用不方便时就需要用到重写了,但重写有着诸多的注意事项:
接下来代码全以下面代码的重写:

public void eat(int a) {
		System.out.println("正在吃饭。。。。");
	}

1.子类重写后的访问权限大于等于父类public>protect>private
eg:

private void eat(int a) {
		System.out.println("真在吃饭。。。。");
	} //wrong
public void eat(int a) {
		System.out.println("真在吃饭。。。。");
	} //ture
  1. 父类中static修饰的方法,子类不允许重写,但是可以被继承;子类重写后的方法不能添加****static修饰,会报错
    注意:父类子类中都加了static虽不会报错但它不是重写

  2. 重写后的方法,方法名必须和父类方法名相同,参数列表除名字不做限制外,其它必须相同,否则不会报错但不是重写

public void eat(int b) {
		System.out.println("真在吃饭。。。。");
	} //是重写
public void eat(double b) {
		System.out.println("真在吃饭。。。。");
	} //不报错,但不是重写

4. 返回值
a. 如果父类方法返回值为void或基本数据类型,则重写后的方法必须和父类方法保持一致(否则就算不报错也有可能是新的方法而不是重写)

public double eat(double b) {
		System.out.println("真在吃饭。。。。");
	} //不报错,但不是重写

b. 如果父类方法返回值为引用类型,则重写后的方法返回值要么与父类一致,要么是父类方法返回值的子类
eg:

Object eat(String name) {  //父类
    System.out.println("在吃饭。。。。");
    return 0;
}
String eat(String name) {  //子类
	    System.out.println("真在吃饭。。。。");
	    return "";
	}  //ture
  1. 最后,说明一下要验证是不是重写,只需在方法前面加上
    @Override 看报不报错即可验证

注意

若重写后需调用父类方法需使用super.方法名(参数列表)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值