`
red_xie
  • 浏览: 27161 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java的继承多态

阅读更多
今天在问答看到一个问题,这里详细解答下:
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
分享到:
评论
1 楼 idealab 2009-09-17  

相关推荐

    Java 继承 多态方面的实例源码.rar

    Java 继承 多态方面的实例源码,内容方面涉及对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏等。。。

    java继承和多态ppt

    java 继承和多态PPT教程

    java继承多态

    理解继承如何增强软件的可重用性 超类(父类)和子类

    封装继承多态总结

    封装继承多态总结

    封装、继承、多态.docx

    封装、继承、多态 一、 封装 封装是面向对象编程的三大特性之一,它是指将同一类事物的特性与功能包装在一起,对外暴露调用的接口...Java 面向对象的三大特性是:封装、继承与多态。这三大特性是面向对象编程的核心。

    java基础 继承和多态实例

    //练习: //1.做一个教师类Teacher,有属性:1.教师号,2教师姓名, //3教师工资(基本工资,课时费,课时数)。 //有方法:1.输出教师所有信息,2.... //2....//(1)该类有以下属性:学校编号:schId, ...

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析

    java继承与多态教学及练习

    1继承的概念 2继承的实现 3变量隐藏与方法覆盖 4super关键字 5 子类的构造顺序 6Object类 7 final关键字

    java中继承与多态的题目

    Java 中继承与多态的题目 本资源摘要信息是关于 Java 中继承和多态的题目,涵盖了面向对象编程的基本概念和继承机制的应用。 继承的概念 继承是面向对象编程的一种机制,允许一个类(子类)继承另一个类(父类)...

    java继承和多态PPT教案学习.pptx

    Java继承和多态PPT教案学习 本PPT教案主要讲解了Java中的继承和多态机制,包括继承、里式代换原则、多态和动态绑定、方法重载、重载构造函数和方法覆盖等概念。 继承是面向对象编程的基本机制之一,允许一个类继承...

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    java封装 继承与多态

    java封装 继承与多态 程序设计 类与对象

    java 接口 类 继承 多态的简单实例

    Java编程语言以其面向对象特性,包括接口、继承、多态性等核心概念,为开发者提供了强大的设计和实现能力。在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口...

    java基础继承封装多态

    本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...

    java继承与多态

    ### Java继承与多态知识点详解 #### 一、引言 在面向对象编程语言中,继承和多态是非常重要的概念。它们提供了强大的机制来管理代码的复杂性,并且能够有效地复用现有代码。本文将详细介绍Java中的继承和多态概念...

    详解java封装继承多态

    Java 封装继承多态详解 Java 中的封装、继承和多态是面向对象编程(Object Oriented Programming)三大特性。下面,我们将详细介绍这三者之间的关系和应用。 封装是指将数据和方法放入类中,并控制对数据的访问...

    北大青鸟javaOOP多态Ch03作业全集.rar

    在Java中,多态主要通过接口和继承来实现。 1. 继承:子类继承父类,可以获得父类的所有非私有属性和方法。在Java中,一个类只能单继承一个父类,但可以实现多个接口,这就是多态的基础。继承的多态性体现在父类...

    源代码+报告-Java的继承和多态编程

    在Java编程中,继承和多态是面向对象编程的核心概念,它们在软件设计中起着至关重要的作用。在这个实验中,我们看到一个具体的应用场景,即实现一个小型公司的工资管理系统,来阐述这两个概念。 首先,让我们理解...

    java继承、多态的简单程序.zip

    这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...

    详解java接口、继承和多态

    ### 详解Java接口、继承和多态 #### 一、Java接口 在Java中,接口是一种定义行为的方式,它提供了一种实现抽象方法的手段。通过接口,开发人员可以为类定义一组方法签名,但不提供这些方法的具体实现。这有助于...

Global site tag (gtag.js) - Google Analytics