本文目录一览:
- 1、在java中,什么是对象类型的转换,
- 2、关于java上转型对象
- 3、自学JAVA,关于对象转型
- 4、Java中对象的上转型对象的定义
- 5、java中向上转型和向下转型什么意思?是用来干什么的?请高手解释下,通俗点,谢谢!
- 6、怎么理解Java的转型对象
在java中,什么是对象类型的转换,
一般就是继承关系的父类和子类,进行对象类型的转换,我们知道子类继承父类,说明子类有了父类的大多数方法,同时子类也可以有自己的方法,如果我们些
A
a
=
new
B();其中B是A的子类,那么这样写没有错。反过来写就有错,因为父类没有子类的一部分方法(可以这么理解)。至于有什么用,这个问题很深奥啊,这个和编程思想有关系,这种写法比较好。一般用父类new子类,可以理解为比如一个鸟的类型,下面有许多子类,我们不用关心new的是什么鸟,因为他们都有相同的父类方法只是实现的时候不一样。可以看看java编程思想,多理解一下,具体我也说不清楚
关于java上转型对象
classHuman{
publicvoiddrink(){System.out.println("Human");}
}
classYongManextendsHuman{
publicvoiddrink(){System.out.println("YongMan");}}
}
publicclassTest{
publicstaticvoidmain(Stringarge[]){
Humane2=newYongMan();
e2.drink();
}
}
以上面这个程序为例子
Humane2=newYongMan();
这句其实是指父类对象e2是子类YongMan对象的上转型对象
上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。
上转型对象可以操作子类继承或者隐藏的成员变量,也可以使用子类继承的或者重写的方法。上转型对象操作子类继承或重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法,则当对象的上转型对象调用这个方法时一定是调用了这个重写的方法
上面的YongMan类中的drink()方法重写了父类的方法
所以最后的输出结果是YongMan
自学JAVA,关于对象转型
先不谈对象,拿基本数据类型来说,int a; 这样就声明了一个int类型的变量,但这个变量还没有值,a = 1; 这就是帮a赋值为1. 而对象也是如此Person p; 是声明了一个Person类型的变量,名字叫p,也就是开辟了一块内存叫p,然后p = new Person(); 就是实例化一个Person对象,在内存中开辟一块空间存放Person对象,让p来指向这块内存,就用通过p来调用这个对象了。
对象用不同的类声明或实例化,Person p;是在内存中声明一个Person类型变量,它只能指向Person类型的实例,不然就会报错,Dod d;是在内存中声明一个Dog类型变量,它只能指向Dog类型的实例,new Person();就是在内存中开辟一块空间存放一个Person实例,p = new Person();就是在内存中开辟一块空间存放一个Person实例让p类指向它,所以你不能用Dog d = new Person();类型不对,只能Dog d = new Dog(); 什么类型的引用才能执行什么类型的指针,如果Dog继承了Animal,像Animal a = new Dog();也是可以的 因为Dog就是一种Animal。什么类型的引用只能调用对应类型的属性和方法。p只能调用Person里面的属性和方法,d只能调用Dog里面的属性和方法,a只能调用Animal里面的属性和方法,虽然是new的Dog对象,但是你是把它当做Animal看的。Animal a = new Dog();这种写法很常见,多态机制你可能还没学 后面你就明白了
Java中对象的上转型对象的定义
class Human{
public void drink(){System.out.println("Human");}
}
class YongMan extends Human{
public void drink(){System.out.println("YongMan");}}
}
public class Test{
public static void main(String arge[]){
Human e2=new YongMan();
e2.drink();
}
}
以上面这个程序为例子
Human e2=new YongMan();
这句其实是指父类对象e2是子类YongMan对象的上转型对象
上转型对象不能操作子类新增的成员变量(失掉了这部分属性);不能使用子类新增的方法(失掉了一些功能)。
上转型对象可以操作子类继承或者隐藏的成员变量,也可以使用子类继承的或者重写的方法。上转型对象操作子类继承或重写的方法,其作用等价于子类对象去调用这些方法。因此,如果子类重写了父类的某个方法,则当对象的上转型对象调用这个方法时一定是调用了这个重写的方法
上面的YongMan 类中的drink()方法 重写了父类的方法
所以最后的输出结果是YongMan
java中向上转型和向下转型什么意思?是用来干什么的?请高手解释下,通俗点,谢谢!
我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向于使用抽象概念“人”。再例如,麻雀是鸟类的一种(鸟类的子类),而鸟类则是动物中的一种(动物的子类)。我们现实中也经常这样说:麻雀是鸟。这两种说法实际上就是所谓的向上转型,通俗地说就是子类转型成父类。这也符合Java提倡的面向抽象编程思想。
子类转型成父类是向上转型,反过来说,父类转型成子类就是向下转型。但是,向下转型可能会带来一些问题:我们可以说麻雀是鸟,但不能说鸟就是麻雀。
怎么理解Java的转型对象
我来提供一个比较靠谱的详细的解释,假设,A类是B类的父类,当我们用子类创建一个对象,并把这个对象的引用放到父类的对象中时,比如A a;
A=new B();
或
A a;
B b=new B();
a=b;
称这个父类对象 a,是子类对象b的上转型对象。好比说“老虎是哺乳动物”。对象的上转型对象的实体是子类负责创建的,但上转型对象会失去原对象的一些属性和功能。上转型对象具有如下特点:
1 上转型对象不能操作子类新增的成员变量(失掉了这部分属性),不能使用子类新增的方法(失掉了一些功能)。
2 上转型对象可以操作子类继承或重写的成员变量,也可以使用子类继承的或重写的方法。
3 如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了这个重写的方法。