1. JAVA当中对象的上转型问题
向上转型,是指父类引用执行子类对象,上述示例中
sp=sc;sp是父类引用,sc是子类对象,因为 子类 is a 父类的关系,因此可以直接赋值
但向上转型有特殊之处,就是转型后的父类对象可以访问父类所有非私有成员和子类重写父类后的成员,但无法访问子类的特有成员
因此 sp.out()可以,因为调用的是父类公共成员
sc.out(3)也可以,因为sc是子类引用指向子类对象,可以访问自己的成员
sp.out(2)却不可以,因为带参数的out方法是子类特有成员,父类中没有,因此无法使用父类引用调用子类特有成员
2. 向上转型的对象他是属于父类的对象还是子类的对象大神们帮帮忙
向上转型是字子类对象当作父类来用,本质生说它是子类的对象,但是是父类的引用。所以只能看见父类的成员变量,而子类自己的成员变量就看不到。如果必须访问子类的成员变量,就要强制转换。 方法就要看子类中是不是重写了父类的方法,如果重写了,而且是父类的引用指向子类对象,那么在运行期间,new的哪个对象就执行哪个对象的方法。 方法和成员变量不同就是因为java的核心机制,多态。希望以上回答对你有帮助
记得采纳啊
3. java中 上转型对象 如何访问操作被子类隐藏的父类方法和变量
向上转型是指父类引用指向子类对象,子类提升为了父类,所以被隐藏的是子类特有方法才对,父类方法如何被子类隐藏?
子类覆盖了父类方法倒是会发生,如果父类的方法被覆写了,调用父类的方法,用super,如果方法没有被覆写直接用就可以;如果父类要访问子类特有方法再向下转型就行了
4. java中的上转型对象
题主可能误会了其中的变量关系
上转型对象默认是使用父类中的成员和方法
只有当父类中的被重写后则使用子类中的成员变量或方法
如
A:
成员有int n和double m;
方法有f():打印子类继承
B:
成员有double n和double m;
B继承A
此时主类中申请一个上转型对象
A a = new B()
a.m是原父类中的
a.f()是原父类中的
而a.n由于被子类改写了
但是上转型对象依然可以操作被隐藏的成员
a.n还是自身原来的int类型的 可以赋个int值
附加:如果在B的类体中嵌一个新的方法cry()或者fly()时,上转型对象a是无法调用的,是哭不出来也飞不出来的
我们可以看出
1.上转型变量是有子类new出来的 父类引用的
2.它可以继续操作父类中的成员,即使它被子类重写过
3.它不可以操作子类新增的方法
总结就是上转型变量是以A为主体的
该继承的还是继承
该有的成员变量被重写还是继续使用自己原本的成员
唯一的就是不能操作子类里新增的量了
5. 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