Java向上转型注意事项

继承、接口:Java子类中如果含有父类中不包含的变量与方法,子类对象向上转型时就是丢失这些变量和方法。

 1 interface SuperClass{
 2     int i = 2;
 3     void f() ;
 4 }
 5 class SubClass implements SuperClass{
 6     int i = 1 ;
 7     int j = 2 ;
 8     public void f(){
 9         System.out.println("SubClass.f()");
10     }
11     public void fun(){
12         System.out.println("SubClass.fun()");
13     }
14 }
15 public class TestInterface{
16     public static void main(String[] args) {
17         SuperClass f = new SubClass() ;
18         f.f() ; //输出:"SubClass.f()"
19         //f.fun() ;//提示f中不包含fun()
20         System.out.println(f.i);//输出:2
21         //System.out.println(f.j);//提示f中不包含j
22     }
23 }
时间: 2024-11-11 23:46:25

Java向上转型注意事项的相关文章

Java向上转型和向下转型(附具体样例)

                                            Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { public void eat() { System.out.println("父类的 eating..."); } } class Bird extends Animal { @Override publ

Java向上转型和向下转型(附详细例子)

                                            Java向上转型和向下转型(附详细例子) 熬夜整理的关于Java向上和向下转型的例子,非常的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { public void eat() { System.out.println("父类的 eating..."); } } class Bird extends Animal { @Override pub

java 向上转型(upcasting)和向下转型(downcasting)区别举例详解

今天下午小龙在练习instanceof用法时突然想到java的upcating 和 downcasting 好像与此有关联,于是自己写了一个相关的案例,在此与众位看到的亲们分享一下,希望能帮到正在学习的伙伴们. package com.instanceoftest; /**  java向上转型和向下转型,以及用instanceof方法来防止向下转型错误 * 接口说明 *interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final 的,不过在in

java向上转型和向下转型

一直不太明白这个概念,于是在网上搜索了一下文章转载自:http://www.cnblogs.com/fickleness/p/3149011.html 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展. 向上转型:子类引用的对象转换为父类类型称为向上转型.通俗地说就是是将子类对象转为父类对象.此处父类对象可以是接口 向下转型:父类引用的对象转换为子类类型称为向下转型. 前者

(原)java 向上转型中,任何域的访问操作都是由编译器解析,不是多态

最近在向java发力,学习学习了下.看到了多态这一节,书中有个比较好的例子,所以就准备写下来,记录下来: 1 package dynamic_binding01; 2 3 public class dynamic_binding01 { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Super super1=new Sub(); 8 System.out.println("s

Java向上转型的意义

1 比如我这个程序 2 public class Testjava{ 3 public static void main(String args[]) 4 { 5 fun(new Student()); 6 fun(new Allen()); 7 8 } 9 public static void fun(Person p) 10 { 11 p.fun2(); 12 if (p instanceof Student) 13 { 14 Student s=(Student)p; 15 s.fun3(

java 向上转型和向下转型

学习向上转型和向下转型怎么用没多难,但是为什么那样用,我搞了很多次没弄明白.没弄明白的原因是平时学习时之看例子,而例子一般都比较简单,没有对象之间的调用,一般就是一个对象调用自己的方法. 首先看下怎么用转型. 要转型,首先要有继承.继承是面向对象语言中一个代码复用的机制,简单说就是子类继承了父类中的非私有属性和可以继承的方法,然后子类可以继续扩展自己的属性及方法. 向上转型:子类对象转为父类,父类可以是接口.公式:Father f = new Son();Father是父类或接口,son是子类.

java向上转型的问题

import java.util.Arrays;import java.util.HashSet;import java.util.Set;class A{ private String s1 = "A1" ; public String s2 = "A2" ; public String get(){ return s2 ; } public String getS1(){ return s1 ; } }class B extends A{ private Str

JAVA向上转型后的方法调用问题

Base b = new Sub ( ) ;JAVA基类变量接收子类对象的引用后,会向上转型: 此时: 1.变量 b 默认可以访问的方法依然是 基类中自身独有的 public和 protected 方法 ,private 方法不可被外界直接访问,这点始终不变[ 相当于Base b = new Base() ] 2.Sub 自身独有而 Base中没有的方法(无论是public,protected还是private ) ,变量 b 都不可以访问 3.但如果 Sub有覆盖Base中的 public或p