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. JVM学习笔记之栈区

    JVM学习笔记之栈区 本文主要内容: 栈是什么?栈帧又是什么?在JVM中,main方法调用say方法后,是怎么运行的?本文将详细讲解栈.希望大家学了之后,对栈有更深的了解. 心法:在JVM中,栈管运行 ...

  2. Spring:基于注解管理bean

    标记与扫描 注解 和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测 到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作. 本质上:所有一切 ...

  3. Linux 终端运行命令时出现多行带有加号的信息(详见文章内容)

    ++_vte_ prompt_ command +++ HISTTIMEFORMAT= +++ history 1 +++ sed 's/^ *[0-9] \+ *//' ++ local ' com ...

  4. Java项目笔记(五)

    这里写目录标题 @Valid 失效 解析jwt 无法建立SSL连接 windows下打jar包,读取nacos 配置文件 异常 @Valid 失效 加入以下依赖 <dependency> ...

  5. SpringBoot.3中的aot.factories到底有什么用?和以前的spring.factories一样吗?

    首先,我们来澄清一下 aot.factories 和 spring.factories 之间的区别.这两个文件不仅名称不同,而且在功能上也存在显著差异.接下来,我们将深入探讨这两个文件的具体作用以及它 ...

  6. USB gadget驱动框架(六)

    本节主要介绍udc驱动枚举过程,需结合udc驱动.composite.c.function等一同分析整个过程. udc驱动中断处理函数 当host检测到DP上拉,则认为有新的device插入,此时ho ...

  7. Linux Kernel Utilization Clamping简介

    随着linux内核调度技术的不断演进,目前存在多个调度类(stop.deadline.rt.cfs.idle)以满足不同性质和要求的任务(task)的调度需求.对于用户空间来说,完全公平调度器(CFS ...

  8. Java实用小工具系列1---使用StringUtils分割字符串

    经常有这种情况,需要将逗号分割的字符串,比如:aaa, bbb ,ccc,但往往是人工输入的,难免会有多空格逗号情况,比如:aaa, bbb , ccc, ,,这种情况使用split会解析出不正常的结 ...

  9. 2022年2月国产数据库排行榜: OceanBase“三连增”重夺探花,GaussDB实现本月最大涨幅引期待

    寒辞去冬雪,暖带入春风.2022年2月,虎年开年的国产数据库流行度排行榜已在墨天轮社区发布,本月共有195个数据库参与排名.排名前十位的数据库分数增减幅度较大,整体排名略有波动. 首先,我们来看看排行 ...

  10. 【Azure Cloud Service】使用RESTAPI更新Cloud Service(Extended Support) 中所配置的证书

    问题描述 当根据Cloud Service (Extended Support) 文档更新证书 ( https://docs.azure.cn/zh-cn/cloud-services-extende ...