java初学者总结(2)
2015-05-30 14:58
316 查看
1.继承中构造函数的问题
….子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法。
….java继承构造方法调用,创建子类实例的时候,如果没有super调用父类带参数的构造方法,则默认会调用父类的无参构造方法,相当于调用super(),其实这句就相当于“隐藏”调用语句。
….子类继承父类时,若父类定义了有参数的构造方法,而没有定义无参数的构造方法,那么在子类中的构造方法必须用super语句去调用父类定义的有参数的构造方法,否则无法通过编译。因此,建议在定义父类时,如写了构造方法,最好写上一个无参数的构造方法。
2.当父类的方法被static修饰时,子类中覆盖的方法也必须用static修饰。反之,父类的方法没有static修饰,子类中覆盖的方法也不能用static修饰。
3.
class A { A() { System.out.println("调用了"); } } class B extends A { B(){ System.out.println("no"); } } public class E { public static void main(String[] args) { B b = new B(); //OK } }
….子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法。
….java继承构造方法调用,创建子类实例的时候,如果没有super调用父类带参数的构造方法,则默认会调用父类的无参构造方法,相当于调用super(),其实这句就相当于“隐藏”调用语句。
….子类继承父类时,若父类定义了有参数的构造方法,而没有定义无参数的构造方法,那么在子类中的构造方法必须用super语句去调用父类定义的有参数的构造方法,否则无法通过编译。因此,建议在定义父类时,如写了构造方法,最好写上一个无参数的构造方法。
2.当父类的方法被static修饰时,子类中覆盖的方法也必须用static修饰。反之,父类的方法没有static修饰,子类中覆盖的方法也不能用static修饰。
3.
class A{} class B extends A{} class C extends B{} class D extends C{} class Demo1 { public static void main(String[] args) { A a=new C(); System.out.println(a instanceof A);//true System.out.println(a instanceof B);//true System.out.println(a instanceof C);//true System.out.println(a instanceof D);//false } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统