1. 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象也可调用
此方法.
调用一个静态方法就是"类名.方法名"
静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中
大量的静态方法正是出于此目的而定义的
例:class Simple{
static void go(){
System.out.println("Go go");
}
public static void main(String args[])
Simple.go();
}
2. 静态变量
静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载
时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final
则另当别论了。static 变量有点类似于C中的全局变量.
看下面这段代码:
3.域变量和局部变量:
从语法形式上看域变量属于类或者是接口,而局部变量是在方法中定义的变量或者是
方法参变量.域变量可以被public ,private,protected,static 等词修饰.而局部变量
则不能被这些词修饰,但是域变量和局部变量都可以被final词修饰.
从内存的存储形式上来看,域变量是对象的一部分,而对象是存在于堆中的.但是局部
变量却是存在于栈中的.
从变量在内存中的存在的时间上看,域变量是对象的一部分随着对象的创建而被创建,
而局部变量则随着方法的调用而产生,随着方法调用的结束而自动消失.
域变量如果没有赋初值的话,会自动以该类型的默认值(0,false,null等)来赋值.当然
也有例外,被final修饰但是又没有被static修饰的域变量必须显式的赋值.而局部变量
必须显式的被赋.
例:class LocalVarAndMemberVar{
int a ;
void m(){
int b;
System.out.println(a);//a 被赋为0;
System.out.println(b);//编译不能通过;
}
}
4.参数的传递:JAVA遵循的是值传递.也就是说,当调用一个方法时,是将表达式的值复制
给形式参数.
5.与变量的传递一样,方法的返回值可以是基本类型也可以是引用类型.
如果一个方法返回的是一个引用类型,由于引用类型是一个引用,所以它可以存储对象
的实体.
例:Object GetNewObject(){
Object ōbj=new Object();
return obj;
}在引用方法时候可以这样用,Object p=GetNewObject();
由于JAVA中所有的东西都是引用(句柄),所以只需要做简单的传递或者返回引用即可.
7.所谓多态是指一个程序中相同的名字表示不同的含义.
简单情况下,可以通过子类对父类方法的覆盖(override)实现多态.也可以利用重载在
同一个类中定义多个同名的不同方法.面向对象的程序中,多态还有更深刻的含义,就是
动态的绑定(dynamic binding),称为虚方法调用.它能够使对象所编写的程序,不用做修
改就可适应于其他所有的子类,如在调用方法时,程序会正确的调用子对象的方法.
8.上溯造型
类似于基本数据类型数据之间的强制类型转换,存在继承关系的父类对象引用和子类
对象引用之间也可以在一定条件下相互转换.但须注意以下的原则::
(1).子类对象可以被视为父类的一个对象,如一个student对象也可以是一个person对象
(2).父类对象不能被当做某一子类对象.
(3).如果一个方法的形式参数被定义的是父类对象,那么调用这个方法时,可以使用子类
对象做为实参.
(4).如果父类对象引用指向的实际上是一个子类对象,那么这个父类对象的引用 可以强
制转换成子类对象的引用.
把派生类型当作它的基本类型处理的过程,又称(upcasting)
如果一个方法声明成final,它能防止覆盖该方法同时告诉编译器不需要动态的绑定.
如果一个方法是static或private,它不能被子类所覆盖,自然也是final的,不存在虚
方法.