java之重写与多态

在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为Override。重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变,即外壳不变,核心重写。重写的好处在于子类可以根据需要,定义特定于自己的行为。
Override和Overload不同的是,如果方法签名不同,就是Overload,Overload方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override。方法名相同,方法参数相同,但方法返回值不同,也是不同的方法。
在编译过程中,加上@Override可以让编译器帮助检查是否进行了正确的覆写。

class Animal{
	public void move() {
		System.out.println("动物可以跑");
	}
}

class Dog extends Animal{
	public void move() {
		System.out.println("狗可以跑");
	}
}

public class Test01{
	public static void main(String args[]) {
		Animal a=new Animal();
		Animal b=new Dog();
		
		a.move();
		b.move();
	}
}

在这里插入图片描述

super关键字:当需要在子类中调用父类的被重写方法时,要使用 super 关键字

class Animal{
	public void move(){
	      System.out.println("动物可以移动");
	   }
	}
	 
class Dog extends Animal{
	   public void move(){
	      super.move(); // 应用super类的方法
	      System.out.println("狗可以跑和走");
	   }
	}
	 
public class Test01{
	   public static void main(String args[]){
	 
	      Animal b = new Dog(); // Dog 对象
	      b.move(); //执行 Dog类的方法
	 
	   }
	}

在这里插入图片描述
多态是指,针对某个类型的方法调用,其真正执行的方法取决于运行时期实际类型的方法,其特性就是运行期才能动态决定调用的子类方法。

class Income{
	protected double income;
	
	public Income(double income) {
		this.income=income;
	}
	
	public double getTax() {
		return income*0.1;
	}
}

class Salary extends Income {
	public Salary(double income) {
		super(income);
	}
	@Override
	public double getTax() {
		if (income <=5000) {
			return 0;
		}
		return (income-5000)*0.2;
	}
}

class Other extends Income{   //其他不需交税的类
	public Other(double income) {
		super(income);
	}
	@Override
	public double getTax() {
		return 0;
	}
}

public class Main{
	public static void main(String[] args) {
		Income[] incomes=new Income[] {
		//有普通收入,工资收入,其他收入的人算税
				new Income(3000),
				new Salary(7500),
				new Other(15000)
		};
		System.out.println(totalTax(incomes));
	}
	
	public static double totalTax(Income...incomes) {
		double total=0;
		for (Income income:incomes) {
			total=total+income.getTax();
		}
		return total;
	}
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值