Java中方法重载和方法重写

方法重载(overload)和方法重写(Overried)

多态(Polymorphism)分为编译时多态和运行时多态。编译时多态是通过方法重载实现;运行时多态是通过方法重写实现(子类重写父类方法)。通常说的多态是指运行时多态,是指同一个继承体系中不同类的对象收到相同的消息时产生多种不同的行为方式。例如,在一般类“几何图形”中定义了一个行为“绘图”,但不确定执行时到底画一个什么图形。特殊类“椭圆”和“多边形”都继承了图形类的绘图行为,但其功能不同,一个是画出椭圆,另一个是画出多边形。这样一个绘图消息发出后,椭圆,多边形等类的对象接收到消息后各自不同的绘图函数,画出不同的图形,这就是多态性的表现。

​ 这也是 Java 面试中常问的问题,考察面试者对 Java 基础掌握的程度,下面举一个非常简单的例子,先来认识一下。

一、重载

​ 在 Java 中所谓的重载就是相同函数名但参数类型或个数不同,再或者参数的顺序不同,这被称为方法重载,示例代码如下:

	public Undergradute() {
     
        
    }

	public Undergradute(String name, int age, Data regTime) {
     
		super();
		this.name = name;
		this.age = age;
		this.regTime = regTime;
	}

二、重写

​ 一般在我们继承父类时需要在子类中重写父类方法,还有就是实现某一个接口时,示例代码如下:

	@Override
	public void kuangStudy() {
     
		// TODO Auto-generated method stub

	}

	@Override
	public boolean isRegster() {
     
		// TODO Auto-generated method stub
		return false;
	}

三、二者的不同

​ 方法的重载和重写都是实现多态的方式,区别在于前者(重载)实现的是运行时的多态性,而后者(重写)实现的是编译时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者顺序不同)称为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

你可能感兴趣的:(笔记,Java,java,多态)