zoukankan      html  css  js  c++  java
  • 复习java基础第一天

    一:static

    static: 静态的. 
      1. 若需要一个类的多个对象共享一个变量,则该变量需要使用 static 修饰. 
      2. 因为 static 修饰的变量为类的所有的实例所共享,所以 static 成员不属于某个类的实例, 而属于整个类.
         所以在访问权限允许的情况下,可以使用 "类名." 直接访问静态成员(成员包括属性和方法).
      3. 注意: 在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员.
         这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象.
      4. 同 3 的道理: 静态方法不能以任何方式引用this和super关键字.
      5. 非静态方法中可以直接来访问类的静态成员.
      6. main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象.
      7. 静态初始化指对类的静态属性进行初始化. 

      7.1 不应该在构造器中对静态成员进行初始化: 因为静态成员不因类的实例而改变. 

      7.2

    1   //非静态代码块: 先于构造器执行,每创建一个对象都会执行一次. 
    2   {
    3       System.out.println("非静态代码块");
    4   }

     7.3

    1   //静态代码块: 使用 static 修饰的代码块
    2   //在类被加载时执行一次,且执行一次. 可以在静态代码块中对静态成员变量进行初始化. 
    3   //先于非静态代码块和构造器执行. 
    4     static{
    5         System.out.println("静态代码块");
    6     }

      8. 所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例.
      8.1 不能再类的外部通过 new 关键字的方式创建新的实例: 构造器私有化.
      8.2 在类的内部创建实例.
      8.3 为了让类的外部能够访问到类的内部创建的实例,该实例必须使用 static 修饰. 
      8.4 不能允许在类的外部修改内部创建的实例的引用. SingleInstance.instance = null
           需要把该属性用 private 修饰.
      8.5 为了让外部进行读,添加对应的 get 方法.     
     
    二:final

      1. 在Java中声明类、属性和方法时,可使用关键字final来修饰。
      2. final标记的类不能被继承.提高安全性,提高程序的可读性。
      3. final标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,否则编译出错。
      4. final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次
      5. final标记的方法不能被子类重写,增加安全性。

    三:

     接口: 抽象方法和常量的集合. 实际上接口更是一种规范!
      1. 用 interface 来定义。 
      2. 接口中的所有成员变量都默认是由 public static final 修饰的.在声明变量时必须直接赋值. 
         常量标识符的书写要求: 字母都大写,多个单词使用 _ 连接.
      3. 接口中的所有方法都默认是由public abstract修饰的.接口没有构造方法.
      4. 实现接口使用 implements 关键字.若一个类既实现接口,有继承了父类, 需要把 extends 关键字放在前面,
         即先继承父类, 后实现多个接口.一个类可以实现多个无关的接口;若实现多个接口,使用,分割. 
      5. 接口也可以继承另一个接口,使用extends关键字.
      
    关于接口的提示:
      1. 实现接口的类中必须提供接口中所有方法的具体实现内容.若该类为抽象类,另当别论. 
      2. 多个无关的类可以实现同一个接口.

      3. 与继承关系类似,接口与实现类之间存在多态性 .

    接口练习例子:

     1 public class TestInterface {
     2 
     3     public static void main(String[] args) {
     4         
     5        System.out.println(Dao.DAO_NAME);
     6         
     7         Dao dao = new DaoImpl();
     8             
     9         ComparableCircle cc1 = new ComparableCircle(2);
    10         ComparableCircle cc2 = new ComparableCircle(7);
    11         
    12        System.out.println(cc1.compareTo(cc2)); 
    13     }
    14 }
    15 
    16 interface Dao{
    17     
    18     String DAO_NAME = "DAONAME";
    19     
    20     void save(Object obj);
    21     
    22     Object get();
    23 }
    24 
    25 interface Test{}
    26 
    27 interface Test2 extends Test{}
    28 
    29 class BaseDao{}
    30 
    31 class DaoImpl extends BaseDao implements Dao, Test{
    32 
    33     @Override
    34     public Object get() {
    35         // TODO Auto-generated method stub
    36         return null;
    37     }
    38 
    39     @Override
    40     public void save(Object obj) {
    41         // TODO Auto-generated method stub
    42     }
    43 }
    44 
    45 class DaoImpl2 implements Dao{
    46 
    47     @Override
    48     public void save(Object obj) {
    49         // TODO Auto-generated method stub    
    50     }
    51 
    52     @Override
    53     public Object get() {
    54         // TODO Auto-generated method stub
    55         return null;
    56     }
    57 }

     

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/shellway/p/3699857.html
Copyright © 2011-2022 走看看