课后作业PPT 7

1.PPT  P9

现在有三个类:

class Mammal{}//父

class Dog extends Mammal {}//子

class Cat extends Mammal{}//子

针对每个类定义三个变量并进行初始化

Mammal m=null ;

Dog d=new Dog();

Cat c=new Cat();

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

m=d;

d=m;

d=(Dog)m;

d=c;

c=(Cat)m;

先进行自我判断,得出结论后,运行TestCast.java实例代码,看看你的判断是否正确.

1)事前判断

m=d是可以的,表示我定义了一个Mammal类型的引用,指向新建的 Dog类 型的对象,即父类的引用指向了自己的子类的对象。由于 Dog是继承自它的父类Mammal,所以Mammal类型的引用是可以指向Cat类型的对象的。。但是d=m不行,因为不能把父类对象引用赋给子类对象引用变量,除非进行强制转化,也就是向下转型(父类转子类)d=(Dog)m。

d=c也会引起编译错误(把d=m注释掉),父类型的引用必须指向子类的对象,即指向谁才能转换成谁,则因为父类引用指向的是Cat类的对象,而要强制转换成Dog类,这是不可能的。

2)截图:

2.PPT  P11

1)程序的运行结果为:

2)结果原因:第一个直接输出父类parent的值,第二个直接输出子类child的值,第三个是把子类的值赋给父类,从而输出结果为子类的语句,第四句是把parent的value++,但是输出的依然是子类的语句,引用的依然是子类的myvalue,所以输出值依然是200,第五个是把parent强制类型转化为child,之后再进行++运算,值也跟着变化,输出结果为201。

3)总结:  当父类和子类具有相同的方法时,调用那个方法是根据对象自己的真实类型所决定的。

2.PPT  P24

截图:

3.PPT P27

不会,因为源程序中有系统退出语句,在catch到错误之后,运行完相应的语句之后,System.exit(0);,使得系统直接退出,不再执行finally中的语句。

4.

动手动脑:

Ø编写一个程序,此程序在运行时要求用户输入一个  整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

Ø要求程序必须具备足够的健壮性,不管用户输入什  么样的内容,都不会崩溃。

程序代码:

package chengjipaiming;
import java.util.Scanner;
class score
{
int score;
void get()
{

try{
Scanner a=new Scanner(System.in);
System.out.print("输入成绩(0~100):");
score=a.nextInt();
if(score<0||score>100)
{
System.out.println("输入的数超出定义的范围");
get();
}
}
catch(Exception e)
{
System.out.println("输入有误,核对后输入;");
get();
}
}
void show()
{

if(score>=0&&score<=60)System.out.print(" 不及格");
if(score>60&&score<=70)System.out.print(" 及格");
if(score>70&&score<=80)System.out.print(" 中");
if(score>80&&score<=90)System.out.print(" 良");
if(score>90&&score<=100)System.out.print(" 优");
}
}
public class Range {

public static void main(String[] args) {
// TODO Auto-generated method stub
score c=new score();
c.get();
c.show();
}
}

截图:

时间: 2024-11-05 18:57:06

课后作业PPT 7的相关文章

异常处理---动手动脑及课后作业

动手动脑1:请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 源码: import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception

课后作业

课后作业 "类型转换"知识点考核-2 程序源代码: 1 class Mammal{} 2 class Dog extends Mammal {} 3 class Cat extends Mammal{} 4   5 public class TestCast 6 { 7      public static void main(String args[]) 8      { 9             Mammal m; 10             Dog d=new Dog();

数组课后作业

课后作业: 随机生成10个数,填充一个数组,然后用消息框显示数组,接着计算数组元素的和,将结果也显示在消息框中. 设计思路:首先使用random随机产生10个数,存储在数组中,然后使用for循环把数字存储在一个String对象中,再使用for循环求出数组中所有数字的和,最后用对话框输出内容. 程序流程图: 源程序代码: import javax.swing.*; public class Test1{ public static void main( String args[] ){ Strin

lhtjzC++征对视频教程的课后作业在哪里可以找到哦

⌒鉴闽 lhtjzC++征对视频教程的课后作业在哪里可以找到哦

课后作业---字符串

一.课后作业一 1.设计思想:根据题意,首先提示输入要进行的操作:解密或加密,然后输入一个字符串,利用charAt()方法将改变的字母连接到结果上,加密:将前23个大小写字母+3,后3个-23强制转化为char:解密:后23个大小写字母-3,前3个+23.再根据结果进行改变,添加提示. 2.程序流程图: 3.源代码: package T4; //胡建峰,2016.10.25 //字串加密 import java.util.Scanner; public class Test { public s

TJU_SCS_C#课后作业(1)

一.作业要求 这是本学期C#课程学习的第一次课后作业,主要大体感受一下C#编程Visual Studio的界面以及一些基本操作.几乎所有编程语言的学习最初都是由hello world开始的,这次我所做的就是根据章老师上课的示范在控制台中显示hello world字样. 二.作业内容 这是一个很简单的代码,最主要的就一句Console.WriteLine("Hello World!"),我还根据章老师上课的示范对控制台的背景和前景进行了些许尝试. 三.课后思考 感觉C#编程语言和Java

课后作业5

动手动脑1:运行示例代码,查看结果,解释为什么是这个结果,从中你能总结出什么? 运行结果:tru truefalse 分析结果:s1,s2,s0均指向hello字符串常量的地址.所以在执行过程中,Java对于同一字符串是不会开辟新的空间的,而在最后的两者的内容虽然相同,但是他们的地址不同所以不等. 动手动脑2:查看String.equals()方法的实现代码 结果分析:s1==s2是判断地址和值,equals()仅仅判断值,s1,s2的值相同,但是地址不同,s3,s4的地址,内容都相同. 动手动

JAVA第三周课后作业

JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t);  // //是原始数据类型吗? System.out.println(s.getClass().isPrimi

JAVA语法基础 动手动脑及课后作业

动手动脑1: 仔细阅读示例: EnumTest.java,运行它,分析运行结果? public class EnumTest { public static void main(String[] args) { Size s=Size.SMALL; Size t=Size.LARGE; //s和t引用同一个对象? System.out.println(s==t);  // //是原始数据类型吗? System.out.println(s.getClass().isPrimitive()); //