java学习基础知识五

一、类的成员之初始化块
1、初始化块(代码块)的作用:对java对象进行初始化
  //在执行new Person();的时候
  //1、类的属性的默认初始化和显示初始化
  //2、执行代码块的代码
  //3、执行构造器的代码
2、一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block),
  当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。

二、非静态代码块:
1、可以有输出语句
2、可以对类的属性声明进行初始化操作
3、可以调用静态和非静态的变量或方法
4、若有多个非静态的代码块,按照从上到下的顺序一次执行
5、每次创建对象的时候,都会执行一次,且先于构造器执行

三、静态代码块:
1、可以有输出语句
2、可以对类的属性声明进行初始化操作
3、不可以对非静态的属性初始化。即不可以调用非静态的属性和方法
4、若有多个静态的代码块,按照从上到下的顺序一次执行
5、静态代码块的执行要先于非静态代码块
6、静态代码块只执行一次

四、关键字final
1、在java中声明类、属性和方法时,可使用关键字final来修饰,表示"最终
  →final标记的类不能被继承。——提高安全性,提高程序的可读性
    如String类、System类、StringBuffer类
  →final标记的方法不能被子类重写。
    如Object类中的getClass()
  →final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次
    如final double PI=3.14;

五、关键字abstract
1、用abstract关键字来修饰一个类时,这个类叫做抽象类;
2、用abstract关键字来修饰一个方法时,该方法叫做抽象方法:只有方法的声明,没有具体实现
如 abstract int abstractMethod();
3、含有抽象方法的类必须声明为抽象类
4、抽象类不能被实例化。抽象类是用来被继承的,抽象类的子类必须重写父类的抽象方法,
并提供具体的方法体。若没有重写全部的抽象方法,仍为抽象类。
5、不能用abstract修饰属性、私有方法、构造器、静态方法和final的方法

六、模板设计模式
  

package test;

/**
* 模板设计模式
* @author 小虞哥哥
*
*/
public abstract class Template {
public abstract void code();

public final void getTime(){}{
  long start=System.currentTimeMillis();
  code();
  long end =System.currentTimeMillis();

  System.out.println("code方法执行的时间:"+(end-start));
  }
}

class TestTP extends Template{
@Override
public void code() {
  // TODO Auto-generated method stub
  int count=0;
  for(int i=0;i<500000;i++){
  count++;
  }

  System.out.println(count);
}
}

七、接口:被实现类实现(面向接口编程)
  →用interface来定义;
  →接口中的所有成员变量都默认是由 public static final修饰的;
  →接口中的所有方法都默认是由public abstract修饰的;
  →接口没有构造器;
  →接口采用多层继承机制
1、有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。
  但是,java不支持多重继承,有了接口,就可以得到多重继承的效果。
2、接口(interface)是抽象方法和常量值的定义的集合。
3、从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
4、实现接口类:
  class SubClass implements InterfaceA{}
5、一个类可以实现多个接口,接口也可以继承其他接口
6、实现接口的类中必须提供接口中所有方法的具体实现内容,方可实例化。否则仍为抽象类
7、如果一个类既继承父类,又实现接口,那么先继承再实现接口
  public class TestInImp2 extends Person implements TestIn{}
8、如果实现接口中的类没有实现接口中的全部方法,必须将此类定义为抽象类

八、工厂设计模式:

  面向接口编程,体现了面向对象的思想;将创建对象的工作转移到了工厂类,不用自己new了,委托给工厂生产。

九、类的成员之内部类
1、在java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。
2、Inner class 一般用在定义它的类或语句块之内,在外部引用它是必须给出完整的名称。
  Inner class 的名称不能与包含它的类名称相同
3、Inner class可以使用外部类的私有数据因为它是外部类的成员,同一个类的成员之间可以互相访问。
  而外部类要访问内部类中的成员需要:内部类.成员或者内部类对象.成员
4、分类:
  →成员内部类(static成员内部类和非static成员内部类)
  →局部内部类(不谈修饰符)、匿名内部类
5、内部类Inner class作为类的成员:
  →可以声明为final
  →和外部类不同,Inner class可声明为private或protected
  →Inner class可以声明为static,但此时就不能再用外部类的非static的成员变量
6、Inner class作为类:
  可以声明为abstract类,因此可以被其他的内部类继承

十、面向对象总结

  

原文地址:https://www.cnblogs.com/MeiToufu/p/14328125.html