/**
*仔细阅读并查看输出,区分不同
*注意,静态变量及静态方法的引用跟声明变量及方法时所用的类有关,即多态有关。
*声明时用父类进行声明,调用时则会调用父类的静态方法及静态变量;
*声明时用子类进行声明,或对已用父类声明过的引用作强制类型转换,调用时则会调用子类的静态方法及静态变量。
**/
public class Static_ {
static String _var="这是父类的静态变量";
public Static_() {
}
public static void static_method(){
System.out.println("这是父类静态方法的输出!");
}
}
class Static_sub extends Static_{
static String _var="这是父类的静态变量的覆盖变量";
public static void static_method(){
System.out.println("这是父类静态的方法的覆盖输出!");
}
}
class test{
public static void main(String args[]){
//以下是类调用
System.out.println("----以下是类调用:");
Static_.static_method();
Static_sub.static_method();
System.out.println("\n");
Static_ sup=new Static_();
Static_sub sub=new Static_sub();
Static_ sup_sub=new Static_sub();
Static_sub sup_sub2=(Static_sub)sup_sub;
System.out.println("\n");
//以下是变量的输出
System.out.println("----以下是变量的输出:");
System.out.println(sup._var);
System.out.println(sub._var);
System.out.println(sup_sub._var);
System.out.println(sup_sub2._var);
System.out.println("\n");
//以下是方法的输出
System.out.println("----以下是方法的输出:");
sup.static_method();
sub.static_method();
sup_sub.static_method();
sup_sub2.static_method();
}
}
***********************************************************************
---------------------------------------------------
以下为上面程序代码的输出:
---------------------------------------------------
----以下是类调用:
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!
----以下是变量的输出:
这是父类的静态变量
这是父类的静态变量的覆盖变量
这是父类的静态变量
这是父类的静态变量的覆盖变量
----以下是方法的输出:
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!
这是父类静态方法的输出!
这是父类静态的方法的覆盖输出!
**************************************************************************
分享到:
相关推荐
Java 语言中的静态变量和静态方法是类级别的成员,它们不属于任何实例,而是直接关联到类本身。在探讨继承和覆盖的问题时,这两者有着不同的行为特性。 首先,让我们来看看静态变量。静态变量(也称为类变量)是...
内部类是 Java 语言中的一种嵌套类,它可以访问外部类的成员变量和方法。内部类可以用来实现多态,例如,声明一个内部类 Shape2D,可以利用它来实现二维的几何形状类 Circle 和 Rectangle。 5.7 本章小结 本章主要...
一个类可以同时实现多个接口,在实现接口的方法时,方法的名字、返回类型、参数个数及类型必须与接口中的方法完全一致,修饰符必须加上public,删除abstract关键字。 接口的目的是规定一些重要的方法,即将一些重要...
成员变量,也称为类变量或实例变量,是定义在类中的变量,但不在任何方法、构造器或代码块内部。这些变量与类的对象紧密相关,用来描述对象的状态或功能。 成员变量有两种主要类型:实例变量和静态变量。 1. 实例...
- 静态多态(Static Polymorphism):主要通过方法重载(Overloading)实现,即在同一个类中定义多个同名但参数列表不同的方法。 - 动态多态(Dynamic Polymorphism):主要通过方法重写(Overriding)实现,子类...
在Java中,多态主要通过继承和方法重写实现。 **3.2 方法重写** 方法重写允许子类重新定义父类的方法。这样,当一个对象被当作父类处理时,实际调用的是子类的方法实现。方法重写的规则包括: - 子类方法的签名...
关于静态初始化,Java类在加载时会执行静态初始化块,用于设置静态变量或执行一次性初始化操作。这与实例初始化块(非静态)不同,后者在创建新对象时执行。 然后是`==`运算符。在Java中,`==`用于比较基本类型值的...
面向对象编程是Java的核心特性,本教程主要涵盖了三个关键概念:封装、继承和多态,以及相关的访问修饰符和方法修饰符。 封装是面向对象编程的基础,它涉及到将数据(属性)和操作这些数据的方法(行为)组合在一个...
**解析**:在这个例子中,`add` 方法接收的是一个基本类型的参数,因此当 `score` 被传入 `add` 方法时,实际上传递的是一个值的拷贝。在 `add` 方法内部对 `score` 进行操作并不会影响到主函数中的 `score` 值。...
在Java中,多态性(Polymorphism)允许我们使用一个接口来引用不同类型的对象,使得代码更具通用性和可扩展性。这允许我们编写出更加灵活、易于维护的程序,同时减少了代码的重复。 首先,我们需要理解多态性的两种...
方法重载是静态多态的一种形式,它指的是在同一个类中定义多个同名方法,但是方法的参数列表不同。在编译时,编译器根据参数的不同来确定调用哪个方法。 对象多态的实现案例可以更直观地理解这一点。在没有多态的...
根据变量所处的位置和作用域的不同,Java中的变量可以分为两大类:成员变量和局部变量。 1. **成员变量** - **定义与作用范围**: - 成员变量是在类中定义的变量。 - 成员变量的作用范围是整个类的所有方法。 -...
在这个例子中,尽管`myPet`是`Animal`类型的引用,但由于它实际上引用的是一个`Dog`对象,所以在调用`speak()`方法时会执行`Dog`类中的实现,这就是多态的基本工作原理。 总结来说,方法覆盖和多态是Java中非常重要...
在Java编程语言中,继承、多态、接口、常量以及代码块是核心概念,它们构建了面向对象编程的基础。让我们逐一深入理解这些知识点。 **继承(Inheritance)** 继承是面向对象编程的一个重要特性,它允许一个类(子类...
Java中的继承和多态是面向对象编程的重要概念,它们为代码的复用、扩展和维护提供了便利。在Java中,类的继承允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的共享和结构的层次化。这使得子类...
在Java中,多态分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态主要通过方法重载实现,即在同一个类中定义多个同名但参数列表不同的方法。运行时多态则基于方法重写(override),子类可以覆盖父类...
12.3 修饰方法:当`final`用于修饰方法时,该方法不能在子类中被重写。这样可以保证特定的实现不被改变,确保代码的行为一致性。 接下来,我们讨论多态性(Polymorphism)这一核心的面向对象特性。 5. 多态性:在...