【Java学习笔记】基础知识学习10【继承与多态】
2013-07-22 02:05
871 查看
继承的重要意义就不多废话的,简单来说就是通过继承某个类,可以避免重复写代码。
例如。写好了人这个类。接下来,要写一个厨师的类,于是,因为我知道厨师是人,所以我看可以在人这个类的基础上,加上一些东西,形成厨师这个类,所以,我就决定继承人这个类,加上一些特性,形成厨师。
继承的时候,涉及到继承的权限的问题,会有public和private
建议初学的时候,都使用public来写类,也用public来继承类,避免初学遇到麻烦。
例如:
这上面的,就是public继承VBString这个类,而VBString这个类的代码,如下:
我们可以看到,类的开始地方,都是public class,这是一种默认的状况,对于初学者也是极好的。至于复杂的private,protected等等情况,另外开专题来分析。等我学到这一步再说。
继承的父类中,会有些方法不适应子类的需求,这个时候就需要覆盖父类中的方法。覆盖的时候,方法中的参数列表信息等等都必须要于父类中的一致。
不可以覆盖父类中,final或者static的方法
必须覆盖父类中abstract的方法,或者子类中也声明该方法为abstract
子类覆盖父类中的同名方法时,子类中方法的声明,必须和父类中方法的声明相同。
例如(创建一个继承VBString的类):
子类中,虽然覆盖了父类中的方法,但是子类中任然包含着父类方法的代码本身。使用super可以调用父类的被覆盖的方法的代码
如下:
结果如下:
Author:SunCorp
Following will be the father class description:
Author:SunSoft
多态是指程序中同一操作在不同的环境下,有不同的语义解释。前面讲的类的继承、方法重写,都是多态的体现。
方法的重载,是同样的方法名,对应不同的参数类型列表,有不同的代码功能,从上面的VBString类中可以看出这一点。
对于一个对象,它既是本类的一个实例,它也可被看做父类的一个实例,成为向上转型。
例如。写好了人这个类。接下来,要写一个厨师的类,于是,因为我知道厨师是人,所以我看可以在人这个类的基础上,加上一些东西,形成厨师这个类,所以,我就决定继承人这个类,加上一些特性,形成厨师。
继承的时候,涉及到继承的权限的问题,会有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类中可以看出这一点。
对于一个对象,它既是本类的一个实例,它也可被看做父类的一个实例,成为向上转型。
相关文章推荐
- [学习笔记] Java核心技术 卷一:基础知识 对象与类、继承(二)
- Java学习笔记_10_继承和多态(补充)
- 黑马程序员--Java基础学习笔记【继承、多态】
- Java 基础知识学习笔记——继承相关内容
- Java学习笔记_10_继承和多态
- [学习笔记] Java核心技术 卷一:基础知识 接口、lambda表达式与内部类(三)
- Java学习笔记——类与对象(封装、继承与多态)
- Java视频学习笔记:基础(五)之多态、重载、覆盖
- Java学习笔记(4): 继承与多态
- Java基础学习10_多态
- java学习笔记——基础知识
- JAVA学习笔记之七继承和多态
- Java基础知识强化之集合框架笔记10:Collection集合使用的步骤
- Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出
- Java学习笔记:Java基础知识
- C/C++学习笔记:基础知识10
- Java学习笔记-《Java程序员面试宝典》-第四章基础知识-4.3关键字(4.3.7-4.3.9)
- Java学习笔记之六——Java类的继承和多态(2)
- java学习笔记6——封装、继承和多态
- 学习笔记 Java类的封装、继承和多态 2014.7.10