假设,B是A的子类或间接子类,当用子类 B创建一个对象,并把这个对象的引用放到A类声明的对象中,如:

A a;
a=new B();或A a;
B b=new B():
a=b;

则称对象a是子类对象b的上转型对象。

1.上转型对象不能操作子类新声明定义的成员变量(失掉了这部分属性),不能使用子类新定义的方法(失掉了这部分行为)。

2.上转型对象可以操作子类继承的成员变量和隐藏的成员变量,也可以使用子类继承的或者重写的方法。

3.上转型对象操作子类继承或者重写的方法时,就是通知对应的子类对象去调用这些方法。因此,在子类重写了父类的

某个方法后,对象的上转型对象调用这个方法时,一定是调用了这个重写的方法。

4.上转型对象虽然不能操作子类新增的方法和成员变量,但可以将对象的上转型对象再强制转换到一个子类对象,这时,

该子类对象又具备了子类所有属性和功能。



//geometry.java
public abstract class geometry{
/* 错误例子 abstract methods cannot have a body,并且应该以';'添加在方法语句末尾.
public abstract double getArea(){
}
*/
public abstract double getArea();
}
//rect.java
public class rect extends geometry{
double a,b;
rect(double a,double b){
this.a=a;
this.b=b;
}
public double getArea(){
return a*b;
}
}
//circle.java
public class circle extends geometry{
double r;
circle(double r){
this.r=r;
}
public double getArea(){
return 3.14*r*r;
}
}
//totalArea.java
public class totalArea{
geometry[] tuxing;
double zongmianji=0;
public void setTuxing(geometry[] tuxing){
this.tuxing=tuxing;
}
public double computerArea(){
for(int i=0;i<tuxing.length;i++){
zongmianji=zongmianji+tuxing[i].getArea();
}
return zongmianji;
}
}
//tuxingMain.java
public class tuxingMain{
public static void main(String args[]){
geometry[] tuxing=new geometry[29];
for(int i=0;i<tuxing.length;i++){
if(i%2==0){
tuxing[i]=new rect(16+i,68);
}
else if(i%2==1){
tuxing[i]=new circle(10+i);
}
}
totalArea ta=new totalArea();
ta.setTuxing(tuxing);
System.out.printf("各种图形的面积之和:%f\n",ta.computerArea());
}
}

输出:

各种图形的面积之和:58778.360000

参考自 《java面向对象程序设计——实验指导与习题解答(张跃平等 著)》

JAVA抽象类向上转型练习——编程例题之计算各种图形面积之和相关推荐

  1. Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和. 实现思路: (1)声明变量num,用于存储用户输入的数字. (2)通过Sca ...

  2. java 强制向上转型,Java 转型(向上或向下转型)详解及简单实例

    在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型. 向上转型 我们在现实中常常这样说:这个人会唱歌.在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们更倾向 ...

  3. JAVA的向上转型与向下转型(二)

    java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasti ...

  4. java 对象向上转型_JAVA对象向上转型和向下转型

    今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...

  5. Java中向上转型与向下转型

    面向对象的三大特征:封装.继承.多态 在讲多态前先了解一些关于继承的Java基础知识: *继承:就是一个类(该类被称为子类)可以继承另一个类(该类被称为父类). *继承"基本"作用 ...

  6. java 接口向上转型_JAVA-向上转型与向下转型在接口中的应用

    先来看看定义: 向上转型(upcasting):子类引用的对象转换为父类类型称为向上转型. Father f= new Father(); son s=new son(); f=s;     //Fa ...

  7. java类型转换——向上转型,向下转型

    类型转换 我们通常把将一个类型强制转换为另外一个类型的过程称之为类型转换,本文所提到的对象类型转换,特指存在继承关系的对象,因为在Java中不存在继承关系的对象进行转换的时候会抛出java强制类型转换 ...

  8. java理解向上转型和向下转型

    在讲述向上转型和向下转型之前,我们先简单讲解下多态,如果后续看了有关多态的讲解还是不弄,只能自己上网去查阅和理解. 多态概念: 多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种 ...

  9. Java:向上转型,向下转型

    1.向上转型:子类对象直接赋给父类引用.(自动转换) 例如:Animal为父类 a为父类对象,Bird为子类b为子类对象 Animal a=new Bird(); 作用:父类能调用除了子类中独有的方法 ...

最新文章

  1. html弹出保存文件对话框_这样操作,3分钟不要就可以在GIS office中轻松导入坐标点文件!...
  2. hibernate 高级映射 --张国亮总结第一季
  3. 360Stack裸金属服务器部署实践
  4. 20190520算法题存档
  5. 解决win7下PIL无法打开图片的问题
  6. php css 编译,LAMP环境搭建之php安装
  7. u盘锁电脑_手机空间不足?U盘来辅助,一招解决问题
  8. Java–cvc-complex-type.4:Attribut ‘version’ must appear on element ‘web-app’
  9. python数据框转化为矩阵_在Python中将系列重塑为Dataframe矩阵
  10. jsp项目实战--项目介绍
  11. AD9的PCB技巧——封装的更新
  12. 编写基础程序:Hello World
  13. [计算机数值分析]拉格朗日插值公式
  14. 访问win7默认共享
  15. 卡方独立性检验|卡方拟合性检验
  16. 苏州计算机英语怎么说,苏州用英语怎么说,苏州的英语单词
  17. 历史经验之js个200经验收藏
  18. 【例7-15 UVA-1603】Square Destroyer
  19. 图像属性——老照片特效
  20. 设立分公司,还是子公司更省税

热门文章

  1. 比较两个文档中的文字的区别
  2. 【Android 10 源码】MediaRecorder 录像流程:MediaRecorder 初始化
  3. Conv2d和Conv3d详解
  4. 蓝桥杯单片机总结1(经验分享以及模块的注意点)
  5. 计算机辅助教学调查报告,2014-2018年中国计算机辅助教学系统行业调查及市场前景咨询报告...
  6. 【超详细】手把手教你搭建MongoDB集群搭建
  7. 【知乎(从第10人开始最新补充)】你熟知的领域有哪些重要的知识或思维方法,业外人士因爲不瞭解它們而常常陷入困境?
  8. 获取手机号码/判断Sim卡状态
  9. import、from...improt、from...import *三者的区别
  10. 巴比特 | 元宇宙每日必读:微信或首次以“涉数字藏品二级交易”为由封禁一公众号,平台新规也对此提出警告...