class Foo {
public int a; public static final String str = "foo"; public Foo() {
a = 3;
} public int addFive() {
a = a + 5;
return a;
} public int addFiveByGetA() {
a = getA() + 5;
return a;
} public int getA() {
return a;
} public String getStr() {
return str;
} public String addStr() {
return getStr();
} } public class Bar extends Foo {
public int a; public static final String str = "bar"; public Bar() {
a = 8;
} // public int addFive() {
// a += 5;
// return a;
// } public int getA() {
return a;
} public String getStr() {
return str;
} public static void main(String[] args) {
Foo foo = new Bar();
Bar bar = new Bar();
//调用的是子类中的方法
System.out.println(foo.getA()); //调用的是子类中的方法
System.out.println(bar.getA()); //直接调用父类中的a
System.out.println("Value: " + foo.a); //直接调用子类中的a
System.out.println("Value: " + bar.a); //调用的是父类中的方法
System.out.println(foo.addFive()); //调用的是父类中的方法
System.out.println(bar.addFive()); //调用的是子类中的方法
System.out.println(foo.addFiveByGetA()); //调用的是子类中的方法
System.out.println(bar.addFiveByGetA()); //直接调用父类中的str
System.out.println("str: " + foo.str); //直接调用子类中的str
System.out.println("str: " + bar.str); //调用的是父类中的方法
System.out.println(bar.getStr()); }
}

运行结果:

8

8

Value: 3

Value: 8

8

8

13

13

str: foo

str: bar

bar

其实Java继承中,成员变量(包括静态变量,实例变量,常量)没有覆盖(override)一说,应该叫隐藏(hidden)。override只针对方法来说的。

当成员变量为private时,其他类不能直接访问到,只能通过非private方法 访问,因此直接按照分析方法的思路分析,如该方法是否有覆盖,该方法是否是静态方法。

当成员变量为static时,即静态变量,在类加载过程中就分配了内存,因此只与访问的变量类型有关。



只要记住:一个男人肯定也是人,一个人却不一定是男人的道理,就非常容易理解父类和子类之间的转换关系了。
-Object类-
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类就默认继承Object类。因此,Object类是Java类层中的最高层类,是所有类的超类。Java中任何一个类都是它的子类,由于所有的类都是由Object衍生出来的,所以Object的方法适用于所有类。

java 子类继承父类 -- 重写、覆盖的更多相关文章

  1. java子类继承父类的方法(代码简略版)

    父类:public class Subjects { public void b() { System.out.println("学科"); } public void a(){ ...

  2. c++子类继承父类的覆盖问题

    废话少说,先看一段代码! #include <iostream> #include <string> using namespace std; class A { public ...

  3. Java子类继承父类的执行顺序

    父类的静态代码块(static) 子类的静态代码块(static) 父类的非静态代码块(父类成员初始化) 父类的构造方法 子类的非静态代码块(子类成员初始化) 子类的构造方法

  4. Java子类对于父类中static方法的继承

    今天看到了Java中子类继承父类的一个相关讨论,在网上综合了各家的观点,写下了一篇简短的总结. 问题如下,在父类中含有staic修饰的静态方法,那么子类在继承父类以后可不可以重写父类中的静态方法呢? ...

  5. java中子类继承父类程序执行顺序

    java中子类继承父类程序执行顺序 FatherTest.java public class FatherTest { private String name; public FatherTest() ...

  6. (转载) Java子类与父类之间的对象转换

    在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换.从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子 ...

  7. Java子类与父类之间的类型转换

    1.向上转换 父类的引用变量指向子类变量时,子类对象向父类对象向上转换.从子类向父类的转换不需要什么限制,只需直接蒋子类实例赋值给父类变量即可,这也是Java中多态的实现机制. 2.向下转换 在父类变 ...

  8. @Inherited:允许子类继承父类的注解。

    在看定义注解的相关文章的时候,看到这个@Inherited注解,简单的说明并没有真正搞懂是什么意思.在网上搜索了一些相关的内容,现在把一篇文章转载过来.以便后面使用. 文章出处,转载地址:(http: ...

  9. python 子类继承父类__init__(转载)

    转载: http://www.jb51.net/article/100195.htm 前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法 ...

  10. python之子类继承父类时进行初始化的一些问题

    直接看代码: class Person: def __init__(self): self.name = "jack" class Student(Person): def __i ...

随机推荐

  1. ServletConfig 类和ServletContext 类

    ServletConfig 类 ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类. Servlet 程序和 ServletConfig 对象都是由 Tomcat ...

  2. Seata 四大模式详解

    分布式事务 参考文章: 分布式事务实战方案汇总 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分布式事务原理及解决方案案例https://www ...

  3. Docker 知识梳理及其安装使用

    Docker 介绍 Docker 是一个强大的工具,用于高效开发.打包和部署应用程序.Docker 是一种容器管理服务.Docker 于 2013 年发布.它是开源的,可用于 Windows.macO ...

  4. JS之Math.sin与Math.cos介绍及应用-实现鼠标点击后的烟花效果

    基本介绍 Math.sin(x) :x 的正玄值.返回值在 -1.0 到 1.0 之间: Math.cos(x) :x 的余弦值.返回的是 -1.0 到 1.0 之间的数: 其中函数中是x是指&quo ...

  5. 合合信息亮相新加坡科技周——Big Data & AI World Expo展示AI驱动文档数字化的前沿能力

    合合信息亮相新加坡科技周--Big Data & AI World Expo展示AI驱动文档数字化的前沿能力   展会规模背景: 2023年10月11日-12日,合合信息在TECH WEEK ...

  6. DNN、CNN、RNN的区别

    参考1:CNN.RNN.DNN区别 参考2:一文读懂 CNN.DNN.RNN 内部网络结构区别 一张图解释所有: 感知机(输入层.输出层.一个隐藏层)-->不能解决复杂的函数-->神经网络 ...

  7. Spring —— AOP总结

    AOP 总结                    

  8. bfs 与优先队列————洛谷p1126(历经两个小时总算AC了,哭晕)

    机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径 \(1.6\) 米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个 \(N\tim ...

  9. [TK] Blocks 单调栈

    题目描述 给出 \(N\) 个正整数 \(a[1..N]\) ,再给出一个正整数 \(k\) ,现在可以进行如下操作:每次选择一个大于 \(k\) 的正整数 \(a[i]\) ,将 \(a[i]\) ...

  10. Linux 循环设备 loop疑惑

    什么是loop设备? loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后, 就像一个磁盘或光盘一样使用.在使用之前,一个 loop 设备必须要和一个文件进行连接.这种结合方 ...