我的第一篇博客,献给黑马啦。(知识点:构造体,内部类访问权限)

来源:互联网 发布:新版本mac 启动输入法 编辑:程序博客网 时间:2024/06/04 23:21

    这个时候,我看完了java基础知识,Java高新技术看到一半。现在才开始写博客,是因为我想给自己一个复习的机会。刚刚看完的知识点可能掌握了6成,但是一段时间后就所剩无几了。希望我这个用意不要成为我后期进度的累赘。(心里敲鼓,感觉悬)

   我是从视频的第五天开始看的,一直到结束都不敢漏下什么知识点。因为我知道基础很重要!!!!

   我学习的方法是老师讲到的综合性的,我自己有疑惑的,老师强调的知识点我都自己写一遍,但是我很不喜欢照抄。一般我理解过后就不看老师的自己写,确定自己是不是理解了这个知识点,如果遇到不会的再看一眼,这样我印象就会很深刻。所以我的代码跟老师的不太一样,但实现的目的的相同的。

/**
 * 构造体的运行顺序
 * @author Administrator
 *
 */

public class text1 {
 static
 {
  System.out.println("static");
 }
 public static void out(){
  System.out.println("out");
 }
 //构造体在没有new的时候不会执行。
 {
  System.out.println("hh");
 }
 
 public static void main(String args[]){
  //new text1();
  text1.out();
 }

}

感悟及思考:

静态代码块和构造代码块这玩意我以前从来没有接触过。还挺新鲜。

静态代码块在程序运行时执行,而且在构造代码块之前执行。这个可以用于程序执行第一时间写点说明啥的。

构造代码块只在new对象之前都会执行的代码,还是有用的。但是为什么不直接放在构造函数里面呢?我想应该是如果有不同的构造函数,而每个构造函数都要实现相同的代码,放在构造体里比较方便。

/**
 * 内部类访问权限  static类的成员不会默认是static
 * 内部类的成员其中一个是静态的,那么该内部类就必须定义为静态的。
 * @author Administrator
 *
 */
class Outer {
 int num = 4;
 static int num2 = 8;
 
 class Inter{
  public void function( ){
   System.out.println("num"+num);
  }
 }
 
 static class Inter2{
  public void function( ){
   System.out.println("Inter2" +num2);
  }
  static public void function2( ){
   System.out.println("sta Inter2" + num2);
  }
 }
 
  void method(){
  new Inter().function();
  Inter2.function2();
 }
}
public class Text2 {
 public static void main(String args[]){
  new Outer().new Inter().function();
  new Outer.Inter2().function();//访问静态类中的非静态成员函数
  Outer.Inter2.function2();//访问静态类中的静态成员函数
 }
}


思考与感悟:

为什么内部类含有静态成员,这个类就要被设成是静态类。我觉得是因为非静态的内部类可以访问外部类的静态与非静态成员。如果内部类的成员函数式静态的,它在调用外部类的非静态成员的时候就会报错,因为内部类中的静态函数没有给要访问的外部类的非静态的成员一个对象,而我们知道类的非静态成员必须由对象调用。

 

0 0
原创粉丝点击