【Java学习笔记】基础知识学习10【继承与多态】

继承的重要意义就不多废话的,简单来说就是通过继承某个类,可以避免重复写代码。

例如。写好了人这个类。接下来,要写一个厨师的类,于是,因为我知道厨师是人,所以我看可以在人这个类的基础上,加上一些东西,形成厨师这个类,所以,我就决定继承人这个类,加上一些特性,形成厨师。


继承的时候,涉及到继承的权限的问题,会有public和private

建议初学的时候,都使用public来写类,也用public来继承类,避免初学遇到麻烦。

例如:

package sunsoft.testideas;

public class VBSuperString extends VBString {
	static void newid(){
		String kString ="abcdefg";
		kString=Mid(kString, 3);
		System.out.println(kString);
	}
}

这上面的,就是public继承VBString这个类,而VBString这个类的代码,如下:

package sunsoft.testideas;

public class VBString {
	private StringBuilder innerStringBuilder;
	public VBString() {
		// TODO Auto-generated constructor stub
	}
	public VBString(String inputString){
		innerStringBuilder.append(inputString);
	}
	static String Mid(String inStr,int startP,int EndPoint){
		if(startP<=0){return null;}
		if(startP>inStr.length()){return null;}
		if(EndPoint<startP){return null;}
		if(EndPoint>inStr.length()){return null;}
		return inStr.substring(startP-1, EndPoint);
	}
	static String Mid(String inStr,int startP){
		if(startP<=0){return null;}
		if(startP>inStr.length()){return null;}
		return inStr.substring(startP-1);
	}
}

我们可以看到,类的开始地方,都是public class,这是一种默认的状况,对于初学者也是极好的。至于复杂的private,protected等等情况,另外开专题来分析。等我学到这一步再说。


继承的父类中,会有些方法不适应子类的需求,这个时候就需要覆盖父类中的方法。覆盖的时候,方法中的参数列表信息等等都必须要于父类中的一致。

  • 不可以覆盖父类中,final或者static的方法
  • 必须覆盖父类中abstract的方法,或者子类中也声明该方法为abstract
  • 子类覆盖父类中的同名方法时,子类中方法的声明,必须和父类中方法的声明相同。

例如(创建一个继承VBString的类):

package sunsoft.testideas;

public class VBSuperString extends VBString {
	static void newid(){
		String kString ="abcdefg";
		kString=Mid(kString, 3);
		Easy.ShowL(kString);
	}
	public void Author(){   //这个就是覆盖父类中对应方法的方法
		System.out.println("Author:SunCorp");
	}
}



子类中,虽然覆盖了父类中的方法,但是子类中任然包含着父类方法的代码本身。使用super可以调用父类的被覆盖的方法的代码
如下:

package sunsoft.testideas;

public class VBSuperString extends VBString {
	static void newid(){
		String kString ="abcdefg";
		kString=Mid(kString, 3);
		Easy.ShowL(kString);
	}
	public void Author(){
		System.out.println("Author:SunCorp");
		System.out.println("Following will be the father class description:");
		super.Author();  //这里就是调用父类的方法
	}
}

结果如下:

Author:SunCorp
Following will be the father class description:
Author:SunSoft


多态是指程序中同一操作在不同的环境下,有不同的语义解释。前面讲的类的继承、方法重写,都是多态的体现。

方法的重载,是同样的方法名,对应不同的参数类型列表,有不同的代码功能,从上面的VBString类中可以看出这一点。


对于一个对象,它既是本类的一个实例,它也可被看做父类的一个实例,成为向上转型。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值