java 对象转型小结
来源:互联网 发布:小学生英语阅读软件 编辑:程序博客网 时间:2024/05/16 05:34
一.对象的向上转型, 将子类的对象赋值给父类的引用:
Student s = new Student();
Person p = s; //向上转型
1.以上:
a)Person p = s; //向上转型
b)Person p 是父类的引用。
c)s 是子类的对象。
d) Person是sdutent的父类。
2.实例
a)通过继承关系的向上转型:
class Person{
int age;
String name;
public void intorduce(){
System.out.println("Person intorduce" + age + "name : = "+name);
}
}
class Student extends Person{
String address;
public void study(){
System.out.println("Student study");
}
public void intorduce(){
super.intorduce();
System.out.println("Student address:=" + address);
}
}
class Test{
public static void main(String args[]){
Student s = new Student();
Person person = s;
person.name = "zhangsan";
person.age = 20;
//person.address = "address"; //不能调用子类的函数
person.intorduce(); //指向student类里面的introduce()方法。
//p.study(); //不能调用子类的方法
}
}
b)通过接口方式实现的向上转型
interface Person{
public void introduce( int age, String name );
}
class Student implements Person{
String address;
public void study(){
System.out.println("Student study");
}
public void introduce(int age, String name){
System.out.println("Student introduce name:=" + name + " age : =" + age);
}
}
class Test{
public static void main(String args[]){
Person person = new Student();
// person.address = "address"; //子类特有的成员变量,向上转型之后会被遗失
// person.study(); //子类特有方法,向上转型之后会被遗失。
person.intorduce(20, "张三");
}
}
3. 对对象的引用的话,需要注意:
1)一个引用能够调用那些成员(变量和函数),取决于这个引用的类型
2)一个引用调用的哪一个方法,取决于这个引用所指向的对象。
4.向上转型,可以在继承关系和接口关系中实现。
5.向上转型, 需要注意的是
1)向上转型时,子类会遗失除去与父类对象共有的成员方法之外的其他方法。
2)向上转型时,子类会遗失除去与父类对象共有的成员变量之外的其他变量。
6.向上转型的好处。
看上面的代码,
public static void doIntorduce(Person person, int age, String name) {
person.intorduce(age, name);
}
这里以父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。不然的话,
如果doIntorduce以子类对象为参数,则有多少个子类就需要写多少个函数。这也体现了JAVA的抽象编程思想。
二.对象的向下转型, 将父类的对象赋值给子类的引用:
1.
Student s1 = new Student();
Person p = s1; //向上转型
Student s2 = (Student) p; //向下转型
先把一个对象向上转型,然后在把这个对象强制转换成要转换的类型。
2.实例
class Person{
int age;
String name;
public void intorduce(){
System.out.println("Person intorduce" + age + "name : = "+name);
}
}
class Student extends Person{
String address;
public void study(){
System.out.println("Student study");
}
public void intorduce(){
super.intorduce();
System.out.println("Student address:=" + address);
}
}
class Test{
public static void main(String args[]){
Student s = new Student();
Person p = s;
//Person p = new Sdutent();
//向下转型
Student s = (sdutent)p;
}
}
- java 对象转型小结
- Java学习小结1-上转型对象
- 对象转型小结
- java中的对象转型
- java之上转型对象
- Java之对象转型
- Java中的对象转型
- java 对象转型
- [Java] 对象转型-01
- [Java] 对象转型-02
- Java对象转型
- JAVA对象转型
- Java上转型对象
- 【JAVA】---对象转型
- java对象转型
- #java#对象的转型
- java对象转型
- 对象转型 /java初学
- GPIO模拟I2C程序实现.
- 学习VS2010 -------- 桌面信息提示信息编程
- cookie 记住密码
- 学习笔记
- 2014找工作总结-机会往往留给有准备的人
- java 对象转型小结
- IT项目经理的基本条件
- Scanner读取文件输入
- LINUX ulimit命令
- ContentProvider的用法
- Oracle 常见的33个等待事件
- 韩顺平网页第十九讲
- AT&T汇编伪指令
- Android GUI Layout