java学习总结(关键字)

关键字

1.访问限定符
 1.public
  1.公共的访问修饰符。
  2.它的可见性是在同一个工程(project)下
  3.用public限定的属性和方法可以被在同一工程下的类调用。
 2.protected
  1.公开性低于public的访问限定符。
  2.它的可见性是在同一个包下(package)。
  3.在同一个包中的类都可以调用protected限定的属性和方法。
 3.默认的
  1.默认的即不加任何访问限定符。
  2.它与protected相似,可见性是在同一包下。
 4.private
  1.私有的访问限定符,私有性最高,可访问级别最低。
  2.用private限定的属性和方法只能在本类中使用。

2.this与super
 1.this
  1.表示本类中的属性或方法。
 

 public class A {
   private String name;
   //带参数的构造函数
   public A(String name) {
    this.name = name;
   }
}

   2.实例化后表示本对象的属性或方法。
  3.调用其他的构造函数
  

public class A {
   private String name;
   public A(){
    //调用下面的构造函数
    this("调用带一个参数的构造函数");
   }
   //带参数的构造函数
   public A(String name) {
    this.name = name;
   }
   static void play(){
     System.out.println("B在玩!");
   }
  }

  2.super
  1.调用父类的构造器或者方法。
  2.用super之前必须要继承。
   

public class B extends A{
    public B(){
     super();
    }
    static void play(){
     System.out.println("B在玩!");
    }
    public void study(){
     System.out.println("B在学习!");
    }
   }

    类B继承了父类A,在B中调用了父类的构造器。
   注意:
    1.子类继承父类后,在子类默认的构造其中调用了父类的默认构造器。
    2.子类实例化对象实质上是子类调用父类的无参构造器去创建对象。
    3.如果父类中没有无参数构造器,那么程序就会报错。
    4

.public class B extends A{
     public B(){
      //super();
     }
    }

     这些代码与上面的代码是一样的效果,也就是说子类的无参构造器中可以不写super(),因为子类已经默认写了。
3.final
 1.最终的,这是用来定义常量的,也就是说它只能被赋值一次,赋值后就不能再修改它的值。
 2.使用final定义的八种基本数据类型和String的属性必须初始化值。
4.static
 1.静态的,一个类中的某个属性定义成为static的,那么这个属性就存储在静态区域,由该类实例化的所有对象的这个属性都指向静态区域的同一个地址。
 2.某一静态属性的值被修改后,则有这个类实例化的对象的这个静态属性的值都改变了,这个值由最后赋的值决定。
 3.static定义的方法可以由类名直接调用。
  如:2.2.2中的代码,可以直接用类名B调用其中的静态方法play()
   B.play();
 4.注意点:
  实例化的对象去调用该类中的静态方法时,实质上是这个类去调用这个静态方法。
  如:
   

B b = new B();
   b.play();//输出结果是"B在玩!"

   上面的b.play()实质上是B.play();
 5.一个对象自动转型为哪种类型,那么用该对象调用某一静态方法时,实质上是用自动转型的类去调用该类中的静态方法。
  如:
   

A b1 = new B();
   a.play();//虽然是用B去创建对象,但实质上是调用A中无参构造器去创建对象a的;这里调用的是A类中的play方法,输出结果是"A在玩!"

  6.如果B类继承A类,但是A中没有静态的study方法,那么下面的代码就有错
  

A b2 = new B();
  b2.study();//这里将会报错,使用了自动转型后,该对象不能调用子类中有而父类中没有的方法。

 5.java程序执行顺序:
 1.执行主程序前先装载类,装载静(static)态块
 2.最先装载静态属性到静态块中。
 3.在
  

public class D {
   static String name = "BBB";
   public static void main(String[] args) {
    System.out.println("aaa");
   }

    static{
    System.out.println("ddd");
   }
  }

   该代码运行时输出结果是:
   ddd
   aaa
  在运行该代码前会先装载静态的方法,如本例中装载过程就将"ddd"结果输出了。
  

 static{
    System.out.println("ddd");
   }

 

你可能感兴趣的:(java)