Java中的上下转型
见下边的程序段
package test;
class A {
public String f(A obj)
{
return("A");
}
}
class B extends A {
public String f(B obj)
{
return("C");
}
public String f(A obj)
{
return("D");
}
}
我们使用子类创建一个对象:
B b = new B();
然后再将这个子类的引用放到父类对象中:
A a;
a = b;
那么这个父类对象a是子类对象b的上转型对象,对象的实体由子类负责建立,实质还是子类,只是损失了一些功能而已,这样的得失具体如下:
得:上转型对象可以操作和使用子类继承或者重写的方法。
失:上转型对象丧失了对子类新增成员变量或新增的方法的操作和使用。
那么下边的这段测试代码的打印结果就是“D”,因为a2只能有public String f(A obj) 这个方法是可以用的。
public class TestObj
{
public static void main(String args[])
{ A a1 = new A();
A a2 = new B(); //子类对象转化为父类,称为上转型,不需要强制转换。
B b = new B();
System.out.println(a2.f(b)); //“D”
System.out.println();
if (a2 instanceof B) {
B b1 = (B) a2; //父类对象转化为下转型,此时需要使用强制转换,此时需要先判断要转换的这个对象(也就是a2指向的这个对象)是不是B类的实例
System.out.println(b1.f(b));//"C"
 
相关文档:
数据类型:
(4类8种)
逻辑型-boolean
字符型- char
数值型:
整数型- byte, short, int, long
浮点数型- float, double
·Java 语言中还允许使用转义字符 ‘\’ 来将其后的字符转变为其它的含义.‘\n’代表换行符
·Java整型常量默认为int型,声明lon ......
Java 技术是什么?
Java 技术既是一种高级的面向对象的编程语言,也是一个平台。Java 技术基于 Java 虚拟机(Java virtual machine,JVM)的概念 —— 这是语言与底层软件和硬件之间的一种转换器。Java 语言的所有实现都必须实现 JVM,从而使 Java 程序可以在有 JVM 的任何系统上运行。
Java 编程语言(Java p ......
package com.yc.eap.util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.common ......
Java变量有两种数据类型,一是Primitive主数据类型,一是引用.
主数据类型包括:
Boolean、char、Byte、short、int、long、float、double
引用为:Dog d = new Dog();
d.bark. ......
java中字符串的编码解码问题
1.将字符串转换成byte数组再恢复:
byte[] getBytes(String charsetName)
String(byte[] bytes, String charsetName)
或getBytes()
String(byte[] bytes)
2.使用String sun.misc.BASE64Encode.encode(byte[] b)
byte[] String sun.misc.BASE64Decode.decodeBuffer(String str)
将字符 ......