- 浏览: 83783 次
- 性别:
文章分类
最新评论
-
lovewendy:
...
Android绘制折线图 -
qiao522600806:
myf408 写道我运行了,怎么报错啊,报错如下:04-24 ...
Android绘制折线图 -
qiao522600806:
看看
Android绘制折线图 -
king_tt:
垃圾。运行不了,报错。
Android绘制折线图 -
贾叔叔:
很好用,感谢楼主分享。7楼不知道遇到的什么问题,把他弄得这么生 ...
Android绘制折线图
static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。如果一个成员变量是static的,那么我们可以通过类名.成员变量名的方式来使用它(推荐使用这种方式)
static 修饰的方法也推荐使用类名.方法访问
Overriding and Hiding Methods
Instance Methods
An instance method in a subclass with the same signature (name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the superclass's method.
The ability of a subclass to override a method allows a class to inherit from a superclass whose behavior is "close enough" and then to modify behavior as needed. The overriding method has the same name, number and type of parameters, and return type as the method it overrides. An overriding method can also return a subtype of the type returned by the overridden method. This is called a covariant return type .
When overriding a method, you might want to use the @Override
annotation that instructs the compiler that you intend to override a
method in the superclass. If, for some reason, the compiler detects that
the method does not exist in one of the superclasses, it will generate
an error. For more information on @Override
, see
Annotations
.
Class Methods
If a subclass defines a class method with the same signature as a class method in the superclass, the method in the subclass hides the one in the superclass.
The distinction between hiding and overriding has important
implications. The version of the overridden method that gets invoked is
the one in the subclass. The version of the hidden method that gets
invoked depends on whether it is invoked from the superclass or the
subclass.
Let's look at an example that contains two classes. The first
is Animal
, which contains one instance method and one class method:
public class Animal { public static void testClassMethod() { System.out.println("The class" + " method in Animal."); } public void testInstanceMethod() { System.out.println("The instance " + " method in Animal."); } }
The second class, a subclass of Animal
, is called Cat
:
public class Cat extends Animal { public static void testClassMethod() { System.out.println("The class method" + " in Cat."); } public void testInstanceMethod() { System.out.println("The instance method" + " in Cat."); } public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); myAnimal.testInstanceMethod(); } }
The Cat
class overrides the instance method in Animal
and hides the class method in Animal
. The main
method in this class creates an instance of Cat
and calls testClassMethod()
on the class and testInstanceMethod()
on the instance.
The output from this program is as follows:
The class method in Animal. The instance method in Cat.
As promised, the version of the hidden method that gets invoked is the one in the superclass, and the version of the overridden method that gets invoked is the one in the subclass.
Modifiers
The access specifier for an overriding method can allow more, but not less, access than the overridden method. For example, a protected instance method in the superclass can be made public, but not private, in the subclass.
You will get a compile-time error if you attempt to change an instance method in the superclass to a class method in the subclass, and vice versa.
Summary
The following table summarizes what happens when you define a method with the same signature as a method in a superclass.
Note: In a subclass, you can overload the methods inherited from the superclass. Such overloaded methods neither hide nor override the superclass methods—they are new methods, unique to the subclass.
在Java中子类是不能重写父类的静态方法的,即使子类中有一个与父类中一模一样的静态方法,也不能叫做重写。下使用的程序将会说明这一点:
package cn.sisy.staticfinal; public class MyStatic { public static void main(String[] args) { M m = new N(); m.print(); } } class M{ static void print(){ System.out.println("M"); } } class N extends M { static void print(){ System.out.println("N"); } }
这个程序将会输出M而不是N。这个结果正好说明了这句话: The version of the hidden method that gets invoked depend s on whether it is invoked from the superclass or the subclass.
下面再使用另外一种方法说明不是重写的原因 :
@Override注解是用于表明下面的方法是重写了父类的方法。结果编译不通过。提示出错。
综合以下两点可以说明:静态方法是不能被重写的。当然,这个在实际开发中并没有太多的应用。
但是静态方法时可以继承的:
package cn.sisy.staticfinal; public class MyStatic { public static void main(String[] args) { N n = new N(); n.print(); } } class M{ static void print(){ System.out.println("M"); } } class N extends M { }
程序的运行结果是:M
发表评论
-
Java网络编程-More
2012-10-13 14:34 756代码来源:《疯狂Java讲义》 ... -
网络编程
2012-10-13 13:59 754------------------------------ ... -
Java 剪贴板程序
2012-10-01 19:12 1362hoverlees 写道 众所周知,这个包主要是与系统剪切板 ... -
ImageIO读取位图显示在Frame中
2012-10-01 09:14 870package cn.sisy.awt; import ja ... -
Java的Image抽象类与BufferedImage实现类
2012-10-01 01:03 2180代码一串&&执行流程 package c ... -
Java中三个与绘图有关的方法
2012-09-30 19:12 1528Component 类下的三个与绘 ... -
==以及equals的学习
2012-09-29 23:02 0相等性的比较(==) 1) 对于原生数据类型来说,比较的是 ... -
Java中的access modifier及instanceof运算符
2012-09-30 10:40 834访问修饰符(access modifier) 1) pub ... -
static其它
2012-09-29 19:39 6621. static代码块:静态代码块。 静态代码块的作用也是 ... -
final关键字
2012-09-29 19:32 663final关键字可以修饰属性、方法、类。 final ... -
Java构造器及几个基本概念
2012-09-29 11:58 1029关于构造器 carey-pro 写道 1)jav ... -
流程控制---读书笔记
2012-09-29 11:40 693顺序:从上之下,无判 ... -
抽象类与接口
2012-09-28 18:03 735抽象类视频学习代码记录: 首先定义一个抽象类及两个实现类 ... -
Java与多态
2012-09-28 16:57 786多态:所谓多态,就是父类型的引用可以指向子类型的对象,或者接口 ... -
继承与重写
2012-09-28 11:33 650重写其实是继承的范畴内的一个概念, 为了说明这两个概念,我们 ... -
关于java变量的几个概念
2012-08-10 11:32 733成员变量:指类范围内 ... -
Java中如何使用数组?
2012-08-10 09:16 721一:定义一个数组 type[] arrayName; 二: ... -
Java抽象类、接口简单小结
2012-01-05 15:02 857一、抽象类 package cn.oo; public ... -
finally里的语句一定会执行吗?
2011-12-11 16:06 3570前几天去面试,其中有两道面试题。如下 一:finall ... -
String与==
2011-10-18 21:19 0public class TestString{ publ ...
相关推荐
Java 中的 static 关键字 Java 中的 static 关键字是用于声明类的成员变量和成员方法的,它可以使得变量和方法属于类本身,而不属于某个对象。静态变量也称为类变量,静态方法也称为类方法。静态变量和静态方法可以...
18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static关键字.zip18.static...
C++中的static关键字是一个非常重要的概念,它在不同的上下文中有不同的含义和用途。在C++中,使用static关键字可以修饰变量和函数,具有不同的作用。下面对这些知识点进行详细解释。 首先,静态变量(static ...
static关键字详解: 内容摘要: 一、static关键字定义属性 二、static属性与非static属性还有一个最大的区别,所有的非static属性必须产生实例化对象之后才可以访问,但是static属性不受实例化对象的控制,也就是 说...
"关于static关键字的总结" static 关键字是 Java 语言中一个非常重要的概念,它可以用来修饰变量、方法、内部类和代码块等。下面我们将详细介绍 static 关键字的由来、作用和用法。 一、static 关键字的由来 在 ...
Java面向对象程序设计static关键字 Java面向对象程序设计中,static关键字是一个非常重要的概念,它有很多特点和作用,本文将对static关键字的特点、作用和使用场景进行详细的解释。 static关键字的特点 首先,...
### static关键字详解 在Java编程语言中,`static`关键字是一个非常重要的概念,它用于定义类成员(变量、方法和内部类)的行为属性。当一个类成员被声明为`static`时,它就成为了该类的静态成员,这意味着无论创建...
在C++编程语言中,static关键字是一个非常重要的概念,它在全局变量、局部变量以及函数的声明中都有着不同的用途和含义。以下是对C++ static关键字的详细应用指南的解读。 首先,让我们来了解什么是静态全局变量。...
Static关键字在Java编程语言中扮演着至关重要的角色,它允许我们创建类级别的变量和方法,这些变量和方法不依赖于类的实例即可访问。在深入理解Static关键字之前,我们需要了解类和对象的概念。类是创建对象的蓝图,...
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
在课堂中 已经简要介绍了 static 关键字的使用 我们知道 static 关键字可以用来修饰 类的成员变量 成员方法或者是代码块 下面我们就来说说这个 static 关键字 有时候程序员可能需要定义一个类成员 对它的使用不依赖...
static关键字的特点
"Java 程序显示类中 Static 关键字的用法" Java 中的 static 关键字是 Java 语言中一个非常重要的概念,它主要用于内存管理。静态关键字用于共享给定类的相同变量或方法。用户可以将静态关键字应用于变量、方法、块...
static关键字
2. **static关键字的说明**: `static`可以修饰属性、方法、代码块和内部类,但不能修饰构造器。被`static`修饰的成员在类加载时就会被创建,它们的生命周期比任何对象都要长。静态成员可以直接通过类名访问,无需...
实践最重要,所以我的是理论加实例绝对好理解。。
### Java零基础-static关键字 #### 一、static关键字概述 在Java编程语言中,`static`关键字具有重要的地位。它被广泛应用于多个方面,包括静态成员变量、静态方法、静态代码块以及静态内部类等。正确理解和应用`...
static关键字.notes
MLDN魔乐static关键字 corejava java新手,菜鸟学习