现在的位置: 首页 > 综合 > 正文

java中抽象类和接口异同

2013年09月03日 ⁄ 综合 ⁄ 共 1638字 ⁄ 字号 评论关闭

 

/**
         1.  接口A中, 常量默认为 static final,且一定要赋初值。所有的方法默认为:抽象的方法。
         2.  接口的一种解释为:纯抽象类。 没有自定义构造函数。
         3.  抽象方法只能用public 和 friendly 修饰。
         4.  抽象类中,不一定包含抽象方法。但是如果有抽象方法的类一定是抽象类,加abstract修饰。
         5.  抽象类中的常量,默认初始化为0,能够被赋值。
         6.  抽象类B可以有自己的构造函数,但是不能自己构造实例。如:new B();
         7.  抽象类中可以有静态块,和静态方法。
         8.  protected 控制子类基础范围 ,可以不是同一个包,friendly控制包范围访问权限。
        
**
**/

interface A
{
  public int x = 3;
  
   int  i = 0;                           //static and final
       
   public void print1(int i);            //接口方法(抽象方法)不能带有主体
   
  // static {
    
  //   System.out.println("this is A  static block ");
    
  // }
 
    
}

abstract class  B{
 
  int j;
 
  public  B(){                                //是什么意思呢?
     
        System.out.println("this is constructor B");
  }
  
   public abstract void print();       //抽象的方法不能有主体
 
  public void  p(){
   
    System.out.println("this is B  p");
        
  }
 
  public  void print2(){}
 
  static {
    
     System.out.println("this is B  static block ");
    
    }
    
    
   public  static void prints(){
    
        System.out.println("this is B  static prints");
       
    } 
  
  
}

class  C  extends B  implements A
{
 
   int k = 0;  
  
   //@override  B
   public void print(){
  
   System.out.println("this is C print and k="+k); 
  
    }
      
    //@override B
    public void  p(){
   
    System.out.println("this is C  p");
     
    }
 
  // @override A 
   public void print1(int k){
         System.out.println("this is C print1 k="+k);
    }
   
   
    public void print1(){
         System.out.println("this is C print1 k="+k);
    }
   
 
}

public class TestInterfaceAndAbstract{
 
   public static void main(String args[]){
    
   C c =  new C(); 
  
   c.print();
  
   c.print1(2);
  
   c.print1(C.i);
  
   c.p();
  
   // C.i = 100;  // 不能为最终变量指定值
  
    c.j = 10;
   
   System.out.println(c.j);
  
  //new B();
   C.prints();
 
   }
  
}

抱歉!评论已关闭.