- 浏览: 781353 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (360)
- Java (101)
- JPA/Hibernate (10)
- Spring (14)
- Flex/BlazeDS (37)
- Database (30)
- Lucene/Solr/Nutch (0)
- Maven/Ant (25)
- CXF/WebService (3)
- RPC/RMI/SOAP/WSDL (1)
- REST (6)
- TDD/BDD/JUnit (1)
- Servlet/JSP (2)
- AI/MachineLearning (3)
- Resource (1)
- 字符编码 (2)
- OOA/OOPS/UML (5)
- DesignPattern (8)
- 算法与数据结构 (11)
- Web&App Server (13)
- 并发&异步&无阻塞 (7)
- Entertainment (4)
- JavaScript/ExtJS (45)
- CodeStyle&Quality (1)
- svn/git/perforce (8)
- JSON (2)
- JavaScriptTesting (4)
- Others (6)
- RegularExpression (2)
- Linux/Windows (12)
- Protocal (2)
- Celebrities (1)
- Interview (1)
- 计算机语言 (1)
- English (2)
- Eclipse (5)
- TimeZone/时区 (1)
- Finance (1)
- 信息安全 (1)
- JMS/MQ (2)
- XSD/XML/DTD (3)
- Android (4)
- 投资 (3)
- Distribution (3)
- Excel (1)
最新评论
-
qdujunjie:
如果把m换成具体的数字,比如4或者5,会让读者更明白
m阶B树中“阶”的含义 -
java-admin:
不错,加油,多写点文章
关于Extjs的mixins和plugin -
xiehuaidong880827:
你好,我用sencha cmd打包完本地工程后,把app.js ...
ExtJS使用Sencha Cmd合并javascript文件为一个文件 -
KIWIFLY:
lwpan 写道inverse = "true&qu ...
Hibernate中什么时候使用inverse=true -
luedipiaofeng:
good
消除IE stop running this script弹出框
1. 多态概念要点:
概念:
类重载(overload)方法,子类覆盖(override)父类的方法都是多态的体现.
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
作用:
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。
结论一:多态时,当子类覆盖了父类的方法,使用子类覆盖的方法
结论二:当子类覆盖父类的成员变量时,父类方法使用的是父类的成员变量,子类方法使用的是子类的成员变量
class SuperClass { int number; public SuperClass(int number) { this.number = number; } public int getNumber() { return ++number; } } class SubClass1 extends SuperClass { public SubClass1(int number) { super(number); } } class SubClass2 extends SuperClass { int number=200; public SubClass2(int number) { super(number); } } class SubClass3 extends SuperClass { int number=300; public SubClass3(int number) { super(number); } public int getNumber() { System.out.println("super number:"+super.getNumber()); return ++number; } } class SubClass4 extends SuperClass{ public SubClass4(int number){ super(number); } public int getNumber() { System.out.println("super number:"+super.getNumber()); return ++number; } } public class TestPolymorphsim { public static void main(String[] args) { SuperClass s1 = new SubClass1(100); SuperClass s2 = new SubClass2(100); SuperClass s3 = new SubClass3(100); SuperClass s4 = new SubClass4(100); System.out.println(s1.getNumber()+"\n"); System.out.println(s2.getNumber()+"\n"); System.out.println(s3.getNumber()+"\n"); System.out.println(s4.getNumber()); } }
output:
101
101
super number:101
301
super number:102
102
2. super关键字使用要点:
结论一:构造函数里面通过super调用父类的构造函数的语句只能放置在第一行,否则编译报错.
结论二:如果子类里面有和父类同名的属性和方法(构造函数除外),则父类的同名属性和方法在子类中会被覆盖,子类里面可以通过super.propertyName和super.methodName的方式来访问父类中被覆盖的属性和方法,当然前提是父类的属性和方法不是private的,不过对于属性你可以说子类覆盖了父类的同名属性,也可以说子类没有覆盖,因为就算子类覆盖了属性,如果运行时的instance调用的是方法是继承自父类的,那么该方法访问的是父类的同名属性,不是子类的,子类的方法访问的是子类的属性,如上面的s3打印的是[super number:101,301].
结论三:子类里面的普通方法super.methodName的位置不需要是第一行,这跟构造函数不同.
3. 构造函数定义要点:
1)如果一个类没有定义任何构造函数,编译器默认会生成一个无参构造函数
2)如果一个类显示了定义的有参构造函数,那么编译器就不会生成无参构造函数,如果此时你需要无参构造函数,你得显示的定义一个无参构造函数
3)子类的构造函数是一定要调用父类的构造函数的,如果子类的构造函数中没写任何调用父类的构造函数的代码,那么其实隐含者子类会调用父类的无参构造函数,所以这个时候父类必须要有无参构造函数存在
4)父类如果没有定义任何构造函数,编译器默认会给父类生成一个无参构造函数,这种情况下,子类的构造函数没有任何约束,你可以不定义,也可以显示的定义
5)父类如果定义了有参构造函数,而没有显示定义无参构造函数的话,那么子类的构造函数中必然也要显示的调用父类的有参构造函数,子类中不能省略调父类构造函数的代码
发表评论
-
sapjco3 notes
2019-03-21 14:51 1090sapjco https://support.sap.com/ ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 4567private final String BASE_URL = ... -
使用RestTemplate发送post JSON请求
2019-01-12 17:30 3380private final String BASE_URL = ... -
Spring线程池ThreadPoolTaskExecutor
2018-08-06 09:51 1775<!-- spring thread pool ex ... -
Spring注解事物@Transactional不工作
2018-08-02 18:50 2536“In proxy mode (which is the de ... -
创建前缀索引报长度超出错误
2018-07-25 15:44 1642表结构定义如下: CREATE TABLE `sku` ( ` ... -
Mysql Varchar字符长度
2018-07-25 15:23 1291`sku_name` VARCHAR(200) NOT NUL ... -
使用 Spring RestTemplate 发送 post 请求
2018-07-23 18:49 11623注意点: 1)使用MultiValueMap设置入参,不要使 ... -
Java动态代理Dynamic Proxy
2018-07-21 16:33 723JAVA学习篇--静态代理VS动态代理 https://blo ... -
分布式实时日志分析解决方案 ELK 部署架构
2018-07-20 09:52 1138原文链接:http://www.importn ... -
为什么HashMap容量一定要为2的幂呢?
2018-07-19 10:07 1652原文链接:https://blog.csdn.net/wang ... -
为什么计算HashCode时通常选择31这个数?
2018-07-19 10:05 1329摘自http://www.importnew.com/2208 ... -
jackson自定义序列化和反序列化
2018-07-10 18:47 2174原文链接:https://blog.csdn.net/liu ... -
Pay special attention when modifying online running system
2017-06-23 10:25 0Never remove any properties, me ... -
Map中的Null key, Null Value
2017-06-14 10:52 1878ConcurrentHashMap的key和value都不能为 ... -
Java语法糖
2017-06-05 20:03 476Java语法糖之foreach http://www.imp ... -
Java集合相关
2017-05-24 17:55 0Java集合框架:ArrayList http://www. ... -
Java数据类型的转换:隐式(自动)转换与强制转换
2017-05-14 10:46 0http://blog.csdn.net/u011240877 ... -
分布式开放消息系统(RocketMQ)的原理与实践
2017-05-07 19:55 669分布式开放消息系统(RocketMQ)的原理与实践 http ... -
面试知识点复习(Interview knowledge review)
2017-05-07 18:39 0JVM,多线程相关知识 http://darrenzhu.it ...
相关推荐
示例描述:本章介绍开发Java的基础语法知识。 accumulationByDoWhile.java 用do~while语句写的累加程序 accumulationByFor.java 用for语句写的累加程序 accumulationByWhile.java 用while语句写的累加程序 ...
希望大家喜欢 <br>如果大家觉得好我继续发 <br>课程定位 “Java程序”课程覆盖SCJP认证所要求的知识点,是J2EE课程体系中的基础课程。本课程面向的学员应该具有基本的编程概念,能够编写简单的程序,并学习...
3.2.3 Java关键字 47 3.3 数据类型分类 48 3.4 基本数据类型 48 3.4.1 整型 49 3.4.2 字符型 49 3.4.3 浮点型 51 3.4.4 布尔型 52 3.5 基本类型的类型转换 53 3.5.1 自动类型转换 53 3.5.2 强制类型转化 54...
不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)...
42、一个静态方法,里面可不可以用this和super关键字 24 三、JavaScript/JQuery/Ajax部分 24 1、用js和jQuery怎么进行表单验证 24 3、列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。 24 4、...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 16 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 16 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,...
19、构造器Constructor是否可被override? 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时...
不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface...
19、构造器 Constructor 是否可被 override? ................................................................ 15 20、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继 承具体类...