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