java 多态性 例题《Head first java》

问题描述

java 多态性 例题《Head first java》

刚初学java,问一个《Head first java》的例题

class A{
int ivar=7;
void m1(){
System.out.print("A's m1");
}
void m2(){
System.out.print("A's m2");
}
void m3(){
System.out.print("A's m3");
}
}
class C extends B{
void m1(){
System.out.print("B's m2");
}
}
class B extends A{
void m3(){
System.out.print("C's m3"+(ivar+6));
}
}

public class Mixed2{
public static void main(String[] args){
A a=new A();
B b=new B();
C a=new C();
A a2=new C();

                a2.m1();
                    a2.m2();
                    a2.m3();
        }

}

这题的书本正确答案是
B's m1,A's m2,A's m3,
我的想法答案是(自己用代码试过是对的)
B's m1,A's m2,C's m3, 13

我不纠结这个正确答案,我是想问我的理解对不对
A a2=new C();
我的理解是 创建了一个C类型对象,将它连接给A类型(父类)的引用。这种情况下用a2他具体用法还是和C类型一样,实例变量和方法都还是照C类型,对吗?

解决方案

你的理解是对的,另外应该是 B's m2 吧

解决方案二:

Head First Java
Head First Java
Head First Java资源
----------------------

解决方案三:

你是对的 a2.m3(),调用的是B的m3方法

时间: 2024-08-02 00:40:44

java 多态性 例题《Head first java》的相关文章

java多态性Overload和Override的区别

java中的继承,方法覆盖(重写)override与方法的重载overload的区别  方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现.   重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) .子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"

java 多态性详解及常见面试题_java

java多态性 多态分两种: (1)   编译时多态(设计时多态):方法重载. (2)   运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态.(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态) 运行时多态存在的三个必要条件: 一.要有继承(包括接口的实现): 二.要有重写: 三.父类引用指向子类对象. 多态的好处: 1.可替换性(substitutability).多态对已存在代码具有可替换性.例如,多态对圆Circle类工作,对其他任

Java中JSON字符串与java对象的互换实例详解_java

在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好,下面先看下JSON的格式, JSON可以有两种格式,一种是对象格式的,另一种是数组对象, {"name":"JSON","address":"北京市西城区","age":25}//JSON的对象格式的字符串 [

救命啊,java出错了救命啊,java出错了救命啊,java出错了

问题描述 救命啊,java出错了救命啊,java出错了救命啊,java出错了 int sum=0;for (int i=1;i<=100;i++);sum+=i;System.out.println(""sum""); 解决方案 System.out.println(sum); 解决方案二: for (int i=1;i<=100;i++);->for (int i=1;i<=100;i++) 解决方案三: 出错了.为什么这里出错了? 解决方

非官方观点:Java VS. .NET(转Java技术)

本文作者:王森台湾交通大学科技管理研究所moli.mt88g@nctu.edu.tw 前言:     最近这半年的讲师生涯之中,遇到不少从VB转到Java的学生,绝大大部分的工程师或新进软体开发领域的朋友都会问:"我该学.NET 还是Java ?" "该学C# 还是Java ?"相关的主题在网路上可谓暗潮汹涌,随时可能擦枪走火,在发表本文之前, 自己把C# Spec 深入地读了一次 ,也大致研读了.NET的相关技术文章所以想想在此发表一心得,没有什么预设立场,请大家

什么是Java ?Java详解之深入JAVA

数据类型 任何编程语言都免不了要定义变量,JAVA也不例外.JAVA的变量声明形式如下: type name; 其中的type是数据类型名,name指定义的该数据类型的一个具体变量. JAVA的内置数据类型主要有如下几种: boolean: 布尔值,仅有两个常量,true和false. byte:字节类型值,长度8位(一个字节),取值范围是-128至127. short:短整型值,长度16位(两个字节),取值范围是-32768至32767. int:整型值,长度32位(四个字节),取值范围是-2

stylesheet-bootstrap中的导航中java为何在360浏览器java下拉菜单点了没反应

问题描述 bootstrap中的导航中java为何在360浏览器java下拉菜单点了没反应 <!DOCTYPE html> Bootstrap 实例 - 带有下拉菜单的标签 带有下拉菜单的标签 Home SVN iOS VB.Net Java Swing jMeter EJB 分离的链接 PHP 以下是显示的图片 解决方案 电脑感染了360等非法流氓软件 解决方案二: 有可能是浏览器禁用了js--换个浏览器--比如谷歌火狐--

java工具类之实现java获取文件行数_java

工具类代码,取得当前项目中所有java文件总行数,代码行数,注释行数,空白行数 复制代码 代码如下: import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;import

学Java必读!学不好Java的原因

思考一下 学习Java之前,先别急,静下心来好好想想: 1)你对学习Java是否有兴趣? 2)你是否能静下心来坚持不懈地学习? 嗯,这是个容易但又绝对不应该忽略的问题,你确信自己对Java感兴趣.而且又有吃苦的准备,那你才可能学好Java!如果具备这两点条件,就请继续往下看-- 2准备一下 请不要把你的学习Java之路和其它计算机技术分开看待,技术的联系往往是千丝万缕的,你应该掌握一些学习Java所涉及的基础知识,对于 "CLASSPATH要怎么设置啊"."跪求JDK下载地址