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();
}
}
}
由以下关键字修饰的变量、方法和类所具有的特性如下:
● 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();
}
}
}
相关文章推荐
- Java基础知识
- java易错基础知识点
- Java基础知识总结(转载)
- Java基础知识——JNI入门介绍
- 黑马程序员——Java基础知识补充
- 黑马程序员——Java基础知识——关键字、标识符、常量、变量、运算符、转义字符
- 【java基础知识(难点攻克)】--数组元素二分查找(折半查找)
- JAVA基础知识复习面试笔试宝典
- java 基础知识普及
- JAVA开发基础知识:解析并创建XML文件和Java的反射
- JAVA基础知识之JVM-——通过反射查看类信息
- Java基础知识--第四篇
- Java基础知识(5)
- 黑马程序员-java基础-基础小知识
- JAVA基础总结知识
- 2017最新Java基础知识面试笔试整理--jvm基础篇
- Java基础知识二(修饰符)
- Java线程基础知识
- 学习Spring必学的Java基础知识(1)----反射
- 黑马程序员———java基础知识———面向对象