java 继承中的 成员变量

简介: 之前看到了 这么一段代码  子类中  出现了 和父类 成员同名的 成员变量后的取值问题代码如下class SuperClass {      private int number;          public SuperClass() {          this.

之前看到了 这么一段代码  子类中  出现了 和父类 成员同名的 成员变量后的取值问题

代码如下


class SuperClass {  
    private int number;  
 
 
    public SuperClass() {  
        this.number = 0;  
    }  
 
 
    public SuperClass(int number) {  
        this.number = number;  
    }  
 
 
    public int getNumber() {  
        number++;  
        return number;  
    }  
}  
 


class SubClass1 extends SuperClass {  
    public SubClass1(int number) {  
        super(number);  
    }  
 
}


class SubClass2 extends SuperClass {  
    public SubClass2(int number) {  
        super(number);  
    }  
 


package learn01;

public class SubClass extends SuperClass {  
      
    private int number;  
 
 
    public SubClass(int number) {  
        super(number);  
    }  
 
 
    public int getNumber() {  
        number++;  
        return number;  
    } 
    public static void main(String[] args) {  
        SuperClass s = new SubClass(20);  
        SuperClass s1 = new SubClass1(20);  
        SuperClass s2 = new SubClass2(20);  
        System.out.println(s.getNumber());  
        System.out.println(s1.getNumber());  
        System.out.println(s2.getNumber()); 
    }  
 

}

 输出的 结果 :

1
3
3

开始 也觉得奇怪了  断点调试 再看看 

出现了 两个 number 而   s1.getNumber()  只有一个

调试进去 发现 number=20 传递给了父类,

子类还是为0的


SubClass 类里  重写 SubClass(int number)

调用了 父类构造  值传递到父类

父类使用了 父类的 成员变量

子类使用 子类的 成员变量






相关文章
|
1月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
20 3
|
30天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
1月前
|
Java
在Java多线程编程中,实现Runnable接口通常优于继承Thread类
【10月更文挑战第20天】在Java多线程编程中,实现Runnable接口通常优于继承Thread类。原因包括:1) Java只支持单继承,实现接口不受此限制;2) Runnable接口便于代码复用和线程池管理;3) 分离任务与线程,提高灵活性。因此,实现Runnable接口是更佳选择。
37 2
|
1月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
30 2
|
1月前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
34 1
|
1月前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第4天】Java零基础教学篇,手把手实践教学!
39 2
|
1月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
23 5
|
1月前
|
Java
java继承和多态详解
java继承和多态详解
43 5
|
1月前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
26 3
|
1月前
|
Java 测试技术 编译器
Java零基础-继承详解!
【10月更文挑战第6天】Java零基础教学篇,手把手实践教学!
25 0
下一篇
无影云桌面