您的位置:首页 > 编程语言 > Java开发

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

2013-07-22 02:05 871 查看
继承的重要意义就不多废话的,简单来说就是通过继承某个类,可以避免重复写代码。

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

继承的时候,涉及到继承的权限的问题,会有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类中可以看出这一点。

对于一个对象,它既是本类的一个实例,它也可被看做父类的一个实例,成为向上转型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: