자바 기초 학습-static final 추상 류 인터페이스

13228 단어 Java
그 동안 자바 분야 의 기초 지식 을 체계적으로 배 웠 는데 사실은 실습 을 마치 고 구 덩이 를 메 운 것 이다.
오늘 배 운 것 은 몇 개의 키워드 와 추상 류 와 인터페이스 이다.
1、static
public class Test_1 {                          
    public static void main(String args[]){    
        Man m1 = new Man("June",17);   
        m1.nation = "China";           
        m1.name = "Tom";               
        System.out.println(m1);        
    }
}
class Man{                                                                 
    String name = "June";                                                  
    int age;                                                               
    static String nation ;                                                 
    public Man(String name,int age){                                       
        super();                                                           
        this.name = name;                                                  
        this.age = age;                                                    
       // this.nation = "zhongguo";   ,            。                       
    }                                                                      
    public String toString(){                                              
        return "Man [name="+ name + ",age=" + age +",nation="+nation +"]"; 
    }                                                                      
}                                                                          

static 수식 의 속성 은 클래스 변수 로 클래스.변수의 방식 으로 직접 호출 할 수 있 습 니 다.일반적인 변 수 는 인 스 턴 스 변수 이 고 대상 에 속 하 는 변수 입 니 다.먼저 있 는 대상 만 있 는 인 스 턴 스 변 수 는 쌓 인 공간 에 존재 합 니 다.한편,클래스 변 수 는 정적 영역 에 존재 합 니 다.먼저 클래스 의 생 성 보다 빠 르 고 끝 나 는 시간 도 클래스 의 시간 보다 늦 기 때문에 static 에 의 해 수 식 된 변수의 생명 주기 가 비교적 긴 것 도 큰 단점 입 니 다.
또한 비 정적 방법 에서 도 정적 속성 을 호출 할 수 있다.
그 다음은 static 수식 변 수 를 사용 하 는 두 가지 방식 이다.
(1)굶 주 린 사람 식
//                                                        
class Singleton{                                          
    private Singleton(){                                  
                                                          
    }                                                     
    private static Singleton instance = new Singleton();  
    public static Singleton getInstance(){                
        return instance;                                  
    }                                                     
}                                                         

(2)게으름뱅이 식
//                                                       
class Singleton1{                                        
    private Singleton1(){                                
                                                         
    }                                                    
    private static Singleton1 instance = null;           
    public static Singleton1 getInstance(){              
        if(instance == null){                            
            instance = new Singleton1();                 
        }                                                
        return instance;                                 
    }                                                    
}                                                        

일반적으로 굶 주 린 사람 식 을 사용 하 는데 게 으 른 사람 식 은 스 레 드 안전 문 제 를 일 으 킬 수 있다 는 단점 이 있다.
 
마지막 으로 초기 화 블록,코드 블록 이 라 고도 부 르 며{}으로 표시 합 니 다.
class Order{                                                                               
    private static int orderid = 1001;                                                     
    private String ordername;                                                              
    public Order(){                                                                        
        super();                                                                           
    }                                                                                      
    public Order(int orderid,String ordername){                                            
           super();                                                                        
           this.orderid = orderid;                                                         
           this.ordername = ordername;                                                     
    }                                                                                      
    //   :      static           ,            。                                            
    //               。          ,            。                                             
    {                                                                                      
        orderid = 1002;                                                                    
        ordername = "aa";                                                                  
                                                                                           
    }                                                                                      
    static {                                                                               
        System.out.println("       ");                                                     
        orderid = 1000; //               。                                                 
    }                                                                                      
                                                                                           
    public int getOrderid() {                                                              
        return orderid;                                                                    
    }                                                                                      
                                                                                           
    public void setOrderid(int orderid) {                                                  
        this.orderid = orderid;                                                            
    }                                                                                      
                                                                                           
    public String getOrdername() {                                                         
        return ordername;                                                                  
    }                                                                                      
                                                                                           
    public void setOrdername(String ordername) {                                           
        this.ordername = ordername;                                                        
    }                                                                                      
                                                                                           
    @Override                                                                              
    public String toString() {                                                             
        return "Order{" +"orderid=" + orderid +", ordername='" + ordername + '\'' +'}';    
    }                                                                                      
}                                                                                          

 
2、final
표 시 된 클래스 는 계승 할 수 없습니다.수식 하 는 방법 은 다시 쓸 수 없습니다.수식 하 는 속성 은 변경 할 수 없습니다.이것 은 상수 입 니 다.
3.추상 류(abstract)
abstract class Creator{                                                        
    abstract void breath();                                                    
}                                                                              
//              ;            。                                                 
//abrstrct      、   、private、final、static。                                     
abstract class AbstructPerson extends Creator{   //            ,              。
    public void eat(){                                                         
        System.out.println("eat");                                             
    }                                                                          
    public void walk(){                                                        
        System.out.println("walk");                                            
    }                                                                          
}                                                                              
//        ,           ,        。                                               
//              ,        。                                                     
class Student extends AbstructPerson{                                          
    public void eat(){                                                         
        System.out.println("eating");                                          
    }                                                                          
    public void walk(){                                                        
        System.out.println("walking");                                         
    }                                                                          
                                                                               
    @Override                                                                  
    void breath() {                                                            
        System.out.println("Breath");                                          
    }                                                                          
}                                                                              

추상 류 는 구체 적 인 실례 가 없 는 부류 이 고 구조 기도 있 으 며 실례 화 되 어 서 는 안 된다.abstract 는 속성,구조 기,private,final,static 를 수식 하 는 데 사용 할 수 없다.
인터페이스
인 터 페 이 스 는 추상 적 인 방법 과 상수 치 의 정의 집합 이 라 고 형상 적 으로 볼 수 있다.인터페이스 에는 추상 적 인 방법 과 상수 만 있다.
/*                                                                              
              ,          。                                                      
       。           ,          。                                                 
      ,                 ,             。                                         
            ,         。                                                         
         ,        。                                                             
 */                                                                             
interface AA{                                                                   
    //  ,        public static final   ,        。                               
     public static final int I = 10;                                            
     public static final boolean Flag = false;                                  
     //         public abstract  。                                              
     void method1();                                                            
     void method2();                                                            
}                                                                               
//                                                                              
abstract class BB implements AA{                                                
                                                                                
}                                                                               
//                                                                              
class CC implements AA{                                                         
    @Override                                                                   
    public void method1() {                                                     
                                                                                
    }                                                                           
                                                                                
    @Override                                                                   
    public void method2() {                                                     
                                                                                
    }                                                                           
}                                                                               

 
결론:드디어 헷 갈 리 기 쉬 운 개념 을 구분 했다.면접 필기시험 에서'static 의 역할,그리고 인터페이스 와 추상 류 의 차 이 를 물 었 다.면접 필기시험 을 준비 할 때 도 인터넷 에서 기계 적 으로 기억 하 는 것 뿐 이 었 다.이제 야 static 수식 의 속성 은 클래스 변수 이 고 정적 영역 에 존재 한 다 는 것 을 알 게 되 었 습 니 다.인터페이스 와 추상 류 도 잘 구분 된다.인터페이스 와 추상 류 는 모두 예화 되 지 못 하고 인 터 페 이 스 는 여러 개의 인 터 페 이 스 를 계승 할 수 있 으 며 다 중 계승 을 실현 할 수 있 지만 추상 류 는 단일 계승 만 실현 할 수 있다.그리고 인터페이스 에 구조 기 가 없고 추상 류 에 구조 기 가 있다.

좋은 웹페이지 즐겨찾기