向上转型:动态绑定 [Java]
查了些网上的资料,发现如果子类向上转型为父类,则会遗失掉父类中没有定义的方法,而除了private的属性外,其他的属性都会被父类的属性覆盖。
<父类引用指向子类对象>
<new对象的内存情况:①:为所有的成员变量分配内存空间并自动初始化为默认值
②: 显式初始化;③:调用构造方法;④:对象的引用赋值给变量>
<子类对象在构建的时候,先构建了一个父类对象(copy?)所有的成员变量和方法;
然后重写成员变量和成员方法;只是覆盖而不是delete;父类成员还在>
<子类引用子类中被隐藏的父类成员?强制转换成父类,将视窗转向父类内容>
例如如下程序中,son是一个Father类型的,指向Son类型的对象的引用。所以,调用printTest时,打印的都是子类Son的属性(调用的Son的printTest()方法)。
而当用System.out.println(Son.var2)这样的形式输出时,除了Son的私有属性外,输出的都是Father类的属性值。
而且当调用son.printTest2()时,则出现错误,无法编译。
Father son = new
Son();就是一个向上转型。一开始无法理解为什么System.out.println(Son.var2)输出的是父类Father的属性值,son毕竟是指向一个Son类型的对象啊。下面是我后来的一种想法,比较通俗,如有谬误,请高手指正:
当一个儿子长大成人娶妻生子之后,他便“向上转型”为一个父亲了,呵呵,他除了非常私有的(private)一些情况保持不变外,如姓名,老婆的名
字等
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
VA问题的引出:今天编写贪吃蛇程序的时候遇到这样一个问题
public class Coordinate {
public int headX, headY;
Coordinate(int headX, int headY) {
this.headX = headX;
this.headY = headY;
}
public boolean equals(Coordinate c) {
& ......
Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。
原始类型封装类
boolean -->Boolean
char --->Character
byte -->Byte
short -->Short
int -->Integer
long -->Long
float -- ......
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
public class NumberChange
{
private String strNum;
private String strNumChFormat;
private String strNumT ......
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person id="1">
<username >xiaoma</username>
<password>xiaoma</password>
</person>
<person id="2">
<username>manager</username> ......