您的位置:首页 > 编程语言 > Java开发

JAVA基础知识

2006-07-05 15:51 253 查看
<一>关键字

由以下关键字修饰的变量、方法和类所具有的特性如下:

● public 包内及包外的任何类中均可访问

● private 包内及包外的任何类中均无权访问

● protected 包内的任何类以及包外的那些继承了此类的子类中均可访问

● friendly 如果不以如上关键字修饰,则默认为friendly类型,包内的任何类中均可访问,包外的任何类中均无权访问

● static关键字(只讨论静态变量)

当出现如下情况的时候可以考虑使用这个关键字:
只想为某特定数据分配一份存储空间,而不去考虑究竟要创建多少对象,或是根本不创建任何对象;或者希望某个方法不与包含它的类的任何对象关联在一起(即使没有创建对象,也能够调用这个方法)。

该关键字的具体特点如下:

1>为每一个静态变量只分配一块存储空间,所有此类的对象都可以操控此块存储空间

2>在其它类中,该类被实例化的多个不同的对象,访问到的也会是同一块存储空间

3>初始化时static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何

4>static{}里面的代码是进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时

5>在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推

具体可参考如下代码,以及运行结果:

public class NeuStatic {

static String str="Init";

public NeuStatic(String arg){

str=arg;

}

}

public class NeuMain {

private NeuStatic obj_1=new NeuStatic("obj_1");

static NeuStatic obj_2,obj_3;

static{

print(NeuStatic.str);

obj_2=new NeuStatic("obj_2");

obj_3=new NeuStatic("obj_3");

}

public static void print(String arg){

System.out.println(arg);

}

public static void main(String args[]){

print(obj_2.str);

print(obj_3.str);

}

}

运行结果如下:

Init

obj_3

obj_3

<二>重写 重载 多态

1>重写:重新实现父类中的方法

2>重载:父类和子类中可以出现一些名称相同、参数类型不同、参数数目不同、返回值类型不同的方法,但是这些方法不会出现重写或者与同类中的方法命名冲突

3>多态:是一种机制,在类的继承中得以实现,在类的方法调用中得以体现。如下代码实现了多态的机制:

public class Shape {

void draw(){}

void erase(){}

}

public class Circle extends Shape {

void draw(){

System.out.println("+------ Circle.draw() ------+");

}

void erase(){

System.out.println("+------ Circle.draw() ------+");

}

}

public class Square extends Shape {

void draw(){

System.out.println("+------ Square.draw() ------+");

}

void erase(){

System.out.println("+------ Square.draw() ------+");

}

}

public class RandomShape {

private Random random=new Random();

public Shape next(){

switch(random.nextInt(2)){

default:

case 0: return new Circle();

case 1: return new Square();

}

}

}

public class Shapes {

private static RandomShape shape=new RandomShape();

public static void main(String[] args) {

Shape s[]=new Shape[6];

for(int i=0;i〈s.length;i++){

s[i]=shape.next();

s[i].draw();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: