JAVA基础知识

<一> 关键字
由以下关键字修饰的变量、方法和类所具有的特性如下:
● 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();
    }
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值