今天在问答看到一个问题,这里详细解答下:
class Base{
public int a;
public static int b;
public Base(){
a=1;
b=1;
}
public void addFivetoa(){
a+=5;
}
public static void addSixtob(){
b+=6;
}
}
public class Son extends Base{
//public int a;
//public static int b;
public Son(){
a=2;
b=2;
}
public void addFivetoa(){
a+=5;
}
public static void addSixtob(){
b+=6;
}
public static void main(String args[]){
Son son = new Son();
Base base = son;
base.addFivetoa();
base.addSixtob();
System.out.println(base.a);//7
System.out.println(base.b);//8
System.out.println(son.a);//7
System.out.println(son.b);//8
}
}
过程:先初始化Base的b为0,然后调用父类的构造方法初始化a=1,b=1,然后调用Son的构造方法初始化a=2,b=2;
base.addFivetoa();//a=7;调用的子类的
base.addSixtob();//b=8;调用的父类的
属性是不能多态的,静态方法也不能多态。
图示:
衍生:
class Base{
public int a;
public static int b;
public Base(){
a=1;
b=1;
}
public void addFivetoa(){
a+=5;
}
public static void addSixtob(){
b+=6;
}
}
public class Son extends Base{
public int a;
public static int b;
public Son(){
a=2;
b=2;
}
public void addFivetoa(){
a+=5;
}
public static void addSixtob(){
b+=6;
}
public static void main(String args[]){
Son son = new Son();
Base base = son;
base.addFivetoa();
base.addSixtob();
System.out.println(base.a);//1
System.out.println(base.b);//7
System.out.println(son.a);//7
System.out.println(son.b);//2
}
}
过程:先初始化Base的b为0,然后调用父类的构造方法初始化a=1,b=1,然后调用Son的构造方法初始化子类中的a和b,a=2,b=2;
base.addFivetoa();//调用子类的方法,son.a=7
base.addSixtob();//调用父类的方法,base.b=
1+6=7
剩下的base.a和son.b都没有变化所以分别为1,2。
其中加粗红色的1是父类的b的值,base.addSixtob()(是静态的)所以要调用addSixtob()所在类base的b的值也就是,或者说是base对象调用了addSixtob(),所以要访问base对象所在类的b值。
图示:
- 大小: 19.5 KB
- 大小: 25.8 KB
分享到:
相关推荐
Java 继承 多态方面的实例源码,内容方面涉及对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏等。。。
java 继承和多态PPT教程
理解继承如何增强软件的可重用性 超类(父类)和子类
封装继承多态总结
封装、继承、多态 一、 封装 封装是面向对象编程的三大特性之一,它是指将同一类事物的特性与功能包装在一起,对外暴露调用的接口...Java 面向对象的三大特性是:封装、继承与多态。这三大特性是面向对象编程的核心。
//练习: //1.做一个教师类Teacher,有属性:1.教师号,2教师姓名, //3教师工资(基本工资,课时费,课时数)。 //有方法:1.输出教师所有信息,2.... //2....//(1)该类有以下属性:学校编号:schId, ...
Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析
1继承的概念 2继承的实现 3变量隐藏与方法覆盖 4super关键字 5 子类的构造顺序 6Object类 7 final关键字
Java 中继承与多态的题目 本资源摘要信息是关于 Java 中继承和多态的题目,涵盖了面向对象编程的基本概念和继承机制的应用。 继承的概念 继承是面向对象编程的一种机制,允许一个类(子类)继承另一个类(父类)...
Java继承和多态PPT教案学习 本PPT教案主要讲解了Java中的继承和多态机制,包括继承、里式代换原则、多态和动态绑定、方法重载、重载构造函数和方法覆盖等概念。 继承是面向对象编程的基本机制之一,允许一个类继承...
Educoder题目:Java面向对象 - 封装、继承和多态答案解析
java封装 继承与多态 程序设计 类与对象
Java编程语言以其面向对象特性,包括接口、继承、多态性等核心概念,为开发者提供了强大的设计和实现能力。在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口...
本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...
### Java继承与多态知识点详解 #### 一、引言 在面向对象编程语言中,继承和多态是非常重要的概念。它们提供了强大的机制来管理代码的复杂性,并且能够有效地复用现有代码。本文将详细介绍Java中的继承和多态概念...
Java 封装继承多态详解 Java 中的封装、继承和多态是面向对象编程(Object Oriented Programming)三大特性。下面,我们将详细介绍这三者之间的关系和应用。 封装是指将数据和方法放入类中,并控制对数据的访问...
在Java中,多态主要通过接口和继承来实现。 1. 继承:子类继承父类,可以获得父类的所有非私有属性和方法。在Java中,一个类只能单继承一个父类,但可以实现多个接口,这就是多态的基础。继承的多态性体现在父类...
在Java编程中,继承和多态是面向对象编程的核心概念,它们在软件设计中起着至关重要的作用。在这个实验中,我们看到一个具体的应用场景,即实现一个小型公司的工资管理系统,来阐述这两个概念。 首先,让我们理解...
这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...
### 详解Java接口、继承和多态 #### 一、Java接口 在Java中,接口是一种定义行为的方式,它提供了一种实现抽象方法的手段。通过接口,开发人员可以为类定义一组方法签名,但不提供这些方法的具体实现。这有助于...