- 浏览: 270302 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (251)
- 面试基础 (9)
- java基础 (40)
- 调试配置 (10)
- 转载文章 (4)
- 心灵鸡汤 (8)
- java工具 (6)
- CSS学习 (7)
- css案例 (2)
- 经济 (1)
- 小节惹的祸 (1)
- 实例心得 (21)
- 数据库 (7)
- 有用的代码 (17)
- Struts (3)
- Hibernate (5)
- Spring (3)
- java xml (7)
- Java Reflection API (1)
- 网络配置 (4)
- SSH (8)
- java开源框架 (13)
- ajax (4)
- swing (1)
- 设计模式 (1)
- 未主流组件 (7)
- WebService (6)
- 20111019 (1)
- xiao清讲课笔笔~~~UML (0)
- 笔记 (2)
- SOAP (9)
- 第一天遇到的问题 (1)
- Java Card (3)
- 面试 (18)
- Java (17)
- JNLP 集群 (0)
- java 面试 (3)
最新评论
-
ap0406708:
138XXXXXXXX
webserivce spring-ws 安全 -
yezhuzhe:
...
[code]SSH上传下载 ------温故知新 -
thinking_ou:
怎么需要解压密码
webserivce spring-ws 安全 -
ap0406708:
uuu999ggg 写道连return都写错了
try catch finally 块 与 函数的return -
wst0350:
...
java正则表达式,js正则表达式
package com.zhao.impl; public interface RideCar { public void CanRideCar(); }
package com.zhao.impl; public interface RidePlane { public void CanRidePlane(); }
package com.zhao.impl; abstract public class Person { public String name; public int age; static { //无用abstract 声明为抽象类的话就会执行并左最先 System.out.println("Person's static block"); } public Person() { name = "adult"; age = 18; System.out.println("Person's default construction"); } public Person(String name,int age) { //有this()的话就会调用自己的默认构造成方法 //this(); this.name=name; this.age=age; System.out.println("Person's seft construction"); } }
package com.zhao.impl; import com.zhao.impl.Person; import com.zhao.impl.RideCar; public class Father extends Person implements RideCar { static public int spfi = 1; static public int spfi2 = spMethod(); static public int spfi3; static { spfi3=111; System.out.println("Father's static block"); } public int pfi = 3; public int pfi2 = pMethod(); public int pfi3; { pfi3=333; System.out.println("Father's instance block"); } public Father() { //super(); System.out.println("Father's default construction"); } public Father(String name,int age) { super(name,age); System.out.println("Father's seft construction"); } public void CanRideCar() { System.out.println("Father can ride a car"); } private static int spMethod() { System.out.println("Father's static Method"); return 11; } private int pMethod() { System.out.println("Father's instance Method"); return 33; } }
package com.zhao.impl; public class Child extends Father implements RidePlane { static public int spci = 2; static public int spci2 = spMethod(); static public int spci3; static { spci3=222; System.out.println("Child's static block"); } public int pci = 4; public int pci2 = pMethod(); public int pci3; { pci3=444; System.out.println("Child's instance block"); } public Child() { //有没有super()都会调用父类的默认构造方法 //super(); System.out.println("Child's default construction"); } public Child(String name,int age) { //不能再有super();或this(); //原因:constructor call must be the first statement in the constructor //super(name,age);就不会调用父类的默认构造方法而调父类两参数的构造方法 super(name,age); System.out.println("Child's self construction"); } public void CanRidePlane() { System.out.println("Child can ride a plane"); } private static int spMethod() { System.out.println("Child's static Method"); return 22; } private int pMethod() { System.out.println("Child's instance Method"); return 44; } }
package com.zhao.test; import com.zhao.impl.Child; import com.zhao.impl.Father; import com.zhao.impl.Person; import com.zhao.impl.RideCar; public class TestClass { public static void main(String[] args) { Child c; System.out.println("program start"); System.out.println("Child's spci:"+Child.spci); c = new Child("zhao",24); c.CanRidePlane(); System.out.println("program end"); System.out.println("second program start"); Father d; //Child d; 显示是一样的 d = new Child(); System.out.println("second program end"); } }
program start Person's static block Father's static Method Father's static block Child's static Method Child's static block Child's spci:2 Person's seft construction Father's instance Method Father's instance block Father's seft construction Child's instance Method Child's instance block Child's self construction Child can ride a plane program end second program start Person's default construction Father's instance Method Father's instance block Father's default construction Child's instance Method Child's instance block Child's default construction second program end
package com.zhao.test; import com.zhao.impl.Child; import com.zhao.impl.Father; import com.zhao.impl.Person; import com.zhao.impl.RideCar; public class TestClass2 { public static void main(String[] args) { Person p; Father f; Child c; f = new Child(); System.out.println("f的class:"+f.getClass()); //f是Child类型 //不把f强调转换成Child类型是无Child类型的属性和方法的, //尽管它是用Child的构造器建起,但它的类型是Father System.out.println(((Child)f).pci); c = new Child("zhao",24); System.out.println(c.name+","+c.age); p=f; System.out.println(p.name+","+p.age); System.out.println(f.name+","+f.age); f = c; System.out.println(f.name+","+f.age); // c= p 不能通过编译 //总结,子类变量可以赋值给父类变量,反之不行。 //如人是父类,程序员是子类,程序员可赋值给人,是因为所有程序员都是人。 //人不能赋赋值程序员,因为所有人不是全部是程序员,还有医生,老师~~~ RideCar rc = new Child(); rc.CanRideCar(); System.out.println(rc.getClass()); System.out.println(((Child)rc).name); System.out.println(((Father)rc).name); Father fa = new Father(); //System.out.println(((Child)fa).name); //不能所fa强调转换成Child,因为它本身是father Child ch = new Child("zhao",120); System.out.println(((Father)ch).name); //子类程序员可以强制转换成父类人的原因是,子类有父类的所有属性, //反之不能,是因为父类无子类的所有属性。 } }
f的class:class com.zhao.impl.Child 4 zhao,24 adult,18 adult,18 zhao,24 class com.zhao.impl.Child adult adult zhao
总结:
一.
1.有没有super()都会调用父类的默认构造方法
2.super();this();super(name,age);这些调用构造器的语句只能用一个.原因:
constructor call must be the first statement in the constructor
用了super(name,age);就不会调用父类的默认构造方法而调父类两参数的构造方法
3.用abstract 声明为抽象类的话,好像static块就不执行.
4.Father d = new Child(); 和Child d = new Child();输出结果是一样的.
二.
1.赋值,子类变量可以赋值给父类变量,反之不行。
2.强制转换,子类变量可以强制转换成父类.
3.实际类型,用了什么类的构造成器构造,实际类型就是什么,如Father d = new Child(); ,d的实际上就是Child类型.RideCar rc = new Child(); ,rc实际上也是Child类型.
发表评论
-
从安全和体验上解析移动App的登录
2016-03-02 11:00 531从安全和体验上解析移动App的登录 http://blog.c ... -
hwpf POI
2010-11-13 14:19 1077样式集 StyleSheet styleSheet = hwp ... -
java 注解~~~
2010-11-05 16:00 800/** * 下载文件流 * @param re ... -
SQL
2010-11-04 09:59 782select * from ( select s1.* ,s2 ... -
为什么JAVA要提供 wait/notify 机制?是为了避免轮询带来的性能损失
2010-10-20 17:43 921/* *分析synchronized方法 *s ... -
spring 容器
2010-10-11 10:43 758WebApplicationContext wac = ... -
barcode4j demo
2010-09-25 17:51 959demo~~~~~~~ -
java 转义字符
2010-09-19 14:33 952public class testWord { p ... -
Spring Security 网址
2010-08-02 16:44 794Spring Security 参考文档 [url]h ... -
单点登录(Single Sign On) SSO
2010-08-02 15:31 725编写你自己的单点登录(SSO)服务 http://blog.c ... -
POI 生成excel文件
2010-08-02 11:16 997package com.zhao.poi.test; ... -
java调用本地方法,java与C,C++互调
2010-07-28 10:48 1191JNI Java Native Interface http ... -
用户权限管理模块设计
2010-06-15 11:24 1213用户权限管理模块设计 http://wenku.baidu. ... -
Flex
2010-05-26 14:26 623http://www.blogjava.net/bolo/ar ... -
好垃圾本书中好有用的两个存储过程
2010-05-12 14:52 714来源: SQL动态交叉表 http://blog.csdn.n ... -
jasperreports 与 iReport
2010-04-28 15:10 8591. jasperreports 是生成报表的组件, 其中 ... -
ANT 命令
2010-04-28 14:27 10421. ant 默认命令 2. ant -p 查看所有 ... -
java编译 ant
2010-04-28 10:36 756Tutorial: Hello World with Ant ... -
java如系统环境变量和bat设环境变量
2010-04-27 15:59 2494java_home.bat wmic ENVIRONMEN ... -
网站VS系统
2010-02-07 09:56 950http://www.yingshengxs.com/cn/s ...
相关推荐
此java类实现了对数据表的分类递归树的实现,为本人倾力之作,后期,会发布js版,敬请期待!
一、数据库父子结构数据设计 大部分采用 parentId的形式来存储父id,并且只存储父id,祖父Id不存储。也可以添加存储层级级别或者层级关系等字段。 CREATE TABLE `t_resource` ( `id` varchar(255) NOT NULL ...
202 10.3.3 父子类间的构造器的调用流程 204 10.3.4 如何自定义构造器 207 10.4 什么是单子模式 208 10.5 构造器在程序中是何时运行的 211 10.6 综合练习 214 10.7 小结 215 10.8 习题 215 第11章 异常处理(精彩...
1. 不同名子类之间的静态块不会相互调用,也没有任何联系。 2. 不同名子类在创建对象之前,如果父类的静态块没有被调用过,那么就先调用父类静态块,此时再看本子类是不是第一次被加载,如果是,那么接着调用本子类...
A) 抽象类使类与类之间依旧具有父子联系,而接口一般只是定义了一种规范,并不使实现的接口之间具有父子关系。 B) 可以为抽象类定义对象,但是不能为接口定义对象。 C) 抽象类与接口的用法几乎都相同,具体用哪一个...
7.3.3父子类对象的类型转换 7.4抽象类和接口 7.4.1为什么需要抽象类 7.4.2为什么需要接口 7.5其他内容 7.5.1final关键字 7.5.2Object类 7.6一些工具的使用 7.6.1将字节码打包发布 7.6.2文档的使用 7.7小结...
第1课 数组与内存控制 1.1 数组初始化 1.1.1 Java数组是静态的 1.1.2 数组一定要初始化吗 1.1.3 基本类型数组的初始化 1.1.4 引用类型数组的初始化 1.2 使用数组 1.2.1 数组元素就是变量 1.2.2 没有多维...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...