java中的继承与重写

在java中有重写,重载,覆盖这些名词,重写就叫覆盖,这两个只是名称不同,这里就统一称作重写。
重载:在java的同一个类中,只针对于方法(类中的函数叫方法)而言的,它是指让同一个方法名可以来完成不同的工作,很多时候这些工作的功能基本相同,只是情况不同时,需要方法的返回值类型、参数列表中的参数个数、或参数类型不同,这个时候就用到重载了。
重写:在子类继承父类时,子类中新增的变量或者方法与父类中的变量或方法名称相同,变量的值或者方法功能进行了改写,就叫重写。重写分为变量重写和方法重写。

下面是一个重写的例子

package book;

public class Overload extends ClA{

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Overload o = new Overload();
		System.out.println(o.sum(1, 2, 3));
		System.out.println(o.sum(1, 2));
	}	
	
	public double sum(double a, double b, int c) {
		return a + b + c;
	}
}

class ClA{
	public int sum(int a, int b) {
		return a + b;
	}
}

继承中的类型转换与重写方法的调用
先附上一段代码

package book;

public class Convert {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a = new A();
		B b = new B();
		A c = new B(); //父类由子类创建
		
		System.out.println(a.s);
		System.out.println(b.s);
		a.callMe();
		b.callMe();
		System.out.println();
		
		System.out.println(c.s);
		c.callMe();
		System.out.println();
		
		b = (B)c;  //由子类创建的父类转换为子类
		System.out.println(b.s);
		b.callMe();
		System.out.println();
		
		a = b; //子类转换为父类
		System.out.println(a.s);
		a.callMe();
	}

}

class A{
	public String s = "class A";
	public void callMe() {
		System.out.println("AFunction");
	}
}

class B extends A{
	public String s = "class B"; //变量重写
	public void callMe() {  //方法重写
		System.out.println("BFunction");
	}
}

运行结果
在这里插入图片描述
继承中的类型转换
子类可以直接转换为父类类型;但父类类型要转换为子类的话,要满足两个条件,1.父类与子类要先建立联系,即父类是由子类创建的。2.要进行类型强制转换。
继承中对于重写的调用问题
变量重写:对于变量重写来说,调用这个变量的实例类型是父类类型就调用父类中的变量,是子类类型就调用子类中的变量。
方法重写:如果调用的方法在子类中有被重写,那么就看调用这个方法的实例是由谁创建的就调用谁的方法。对于子类的实例来说,如果子类重写了父类的方法,就调用重写的方法,否则,调用继承的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值