`

java 继承的一个问题(想不明白)

阅读更多
java中的继承问题,以为是学会了java,结果最简单的一个java继承问题都难倒了
请牛人指点一二,请看源码:

类A
package heritage;
class A{   
    int x, y;   
       
    public void setValue(int i, int j) {   
        x = i;   
        y = j;   
    }   
  
    int multiply(){   
        return x * y;   
    }   
}    


继承A类的B
package heritage;
class B extends A{   
    int x, y;   
  
    B(int i, int j) {   
        x = i;   
        y = j;   
    }   
  
    int multiply(){   
        return x * y;   
    }   
}   


测试类Test
package heritage;

public class Test {
	public static void main(String[] args) {
		B subObj = new B(6, 9);
		subObj.setValue(7, 8);
		int m = subObj.multiply();
		System.out.println(m); //54
	}

}

输出是54为何??
子类的x,y屏蔽了从父类继承而来的x,y调用父类的setValue只能改变父类继承而来的x,y,而不能改变子类中的x,y,如果想得到56,可以将子类中的x,y去掉即可。



java中的静态方法:
package staticmethod;

public class A {

	public static void simpleMethod() {
		System.out.println("hello");
	}

	public static void main(String arg[]) {

		A.simpleMethod();

		A a = null;
		a.simpleMethod();  //静态方法和实例没有关系,所以没有空指针的错误

	}
}

执行结果:
hello
hello
分享到:
评论

相关推荐

    JAVA初学者应该明白的问题

    在Java中,默认情况下所有类都继承自 `Object` 类,而 `Object` 类提供了一个 `equals()` 方法。如果我们想要比较自定义类的对象,通常需要重写这个方法。例如,如果有一个名为 `Monster` 的类,并希望比较两个 `...

    明明白白学Java大学霸

    《明明白白学Java大学霸》是一本专为Java初学者设计的学习指南,旨在帮助读者深入浅出地掌握Java编程语言。"明明白白学"强调的是清晰易懂的教学方式,"大学霸"则暗示了本书的目标是培养精通Java的技术高手。通过这...

    java笔试经典题,作为java程序员必须明白的一些知识点

    - **继承**:继承是面向对象编程中的一个重要特性,它使得一个类可以从另一个类那里继承方法和字段。继承的基本形式是由一个类派生出一个新的类,新类称为子类或者派生类,而原有的类称为父类或者基类。Java支持单...

    学习JAVA的步骤 java 学习 步骤

    面向对象编程(OOP)是Java的一个核心特点,因此深入学习OOP的相关概念是必不可少的。这部分包括但不限于: - **继承**:了解子类如何继承父类的属性和行为。 - **构造器**:掌握如何创建对象及其初始化过程。 - **...

    让所有初学者都明白java程序结构

    在Java中,每个程序至少包含一个类。例如,`public class TheTestApplet extends Applet`声明了一个名为`TheTestApplet`的公共类,它继承自`Applet`类。`extends`关键字表示`TheTestApplet`是`Applet`的子类,`...

    Java异常处理,非常适合Java爱好者

    Java异常处理是Java编程语言中的一个关键特性,它允许程序员优雅地处理程序运行时可能出现的错误和不正常状况。在Java中,异常是程序执行过程中出现的问题,它们中断了正常的控制流程,使得程序无法继续按照预期的...

    彻底明白Java的多线程-线程间的通信.doc

    这种方式更灵活,因为Java不支持多重继承,而可以实现多个接口。 线程间的通信是多线程编程中不可或缺的一部分。Java提供了多种机制,如`wait()`, `notify()`, 和 `notifyAll()`方法,这些方法在`Object`类中定义,...

    JAVA拓展思维练习题

    首先,我们要明白Java是一种面向对象的编程语言,它的核心特性包括封装、继承和多态。在解决Java拓展思维练习题时,你需要理解和应用这些基本概念。例如,你可能会遇到设计一个类或接口来满足特定需求的问题,这就...

    没整明白这些问题 别说你学过JAVA(pdf格式)

    "没整明白这些问题 别说你学过JAVA(pdf格式)"这句标题暗示了我们将面临一系列Java学习和面试中常见的挑战,而描述则告诉我们这里有100道面试常考题目,并且提供了一份简易教程作为辅助学习材料。标签进一步强调了...

    java深入浅出

    在java中,可以通过创建线程来实现多线程,每个线程代表一个程序的执行流程。多线程可以使得程序在处理多个任务时能够更加高效。 java的类库也非常丰富。它提供了标准库,包括了各种功能,比如图形用户界面GUI、...

    java基础多线程练习题(1)

    在Java编程语言中,多线程是核心特性之一,它使得程序可以同时执行多个不同的任务,从而提高了系统资源的利用率和程序的响应速度。本文将深入探讨Java中的多线程概念,以及如何通过实践来提升对这一主题的理解。 ...

    彻底明白 Java 语言中的IO系统

    虽然基本的`FileOutputStream`不能直接满足这个需求,但可以通过继承`FilterOutputStream`并覆盖其方法来实现。 ##### 2.2 FilterInputStream的各种类型 - **DataInputStream**: 提供了从字节流中读取基本数据类型...

    Java编写的坦克大战

    通过分析这个项目,我们可以了解Java编程基础,以及如何利用Java实现一个简单的游戏逻辑。 首先,我们要明白Java的基础知识。Java是面向对象的语言,其核心概念包括类、对象、接口和继承等。在这个坦克大战游戏中,...

    JAVA版《魔塔24层》

    《JAVA版《魔塔24层》:初学者的编程之旅与源码解析》 Java是一种广泛应用于各领域的编程语言,特别在开发桌面应用、Web应用以及移动应用...对于想要深入学习Java编程和游戏开发的朋友们,这是一个不容错过的起点。

    初学Java的基本脉络

    Java学习并不像传统数学那样通过几个基本原理推导出所有问题。而是需要实际操作,理论与实践相结合。在遇到困难时,不要停滞不前,而是寻找其他资源或尝试不同的理解方式。 其次,从实践入手。安装JDK,配置好开发...

    Java多线程实战精讲-带你一次搞明白Java多线程高并发

    - **线程创建**:Java提供了两种方式创建线程,一是通过实现Runnable接口,二是继承Thread类。 - **线程生命周期**:新建、就绪、运行、阻塞和终止五种状态。 2. **线程同步与通信** - **synchronized**:用于...

Global site tag (gtag.js) - Google Analytics