Java学习总结1------类,抽象类,接口

 1. 类(class):  class是定义类的关键字,  类中包含类变量, 方法, 内部类, 内部接口等。由class可以生成类的实例, 即一个个对象。 如果一个类的成员被定义成static的,则这个成员不专属于任何对象, 而是属于这个类, 所有的对象共享这个成员。

2.  抽象类(abstract class): 抽象类不能直接生成一个实例, 抽象类中必需有方法是abstract的,抽象类的意思就是它实现了一部分的方法, 而定义为abstract的方法则需要在它的子类中去实现

3.  接口(interface): 接口可以理解为纯抽象的类, 它的每个方法都是未实现的它可以有成员变量, 但必须是static的。  一个类如果从这个接口继承(implements)则它必须实现这个接口的所有方法。

继承类用关键字:extends,继承接口用关键字:implements。 一个类只能从一个类继承下来但可以从多个接口继承(类似于C++的多重继承)。 子类可以覆盖父类的方法(method), 但不能覆盖父类的成员变量(field)。 如果父类的方法为final或static的则不能被覆盖。类的初始化顺序是, 如果有父类, 则先初始化父类的field,然后执行父类的构造函数, 如果子类没有显式的去调父类的构造函数则缺省的会去调父类的无参数构造函数。 然后是子类的field与构造函数的初始化。

public abstract class Animal {
    /*如果只是声明方法没有实现,必须加关键字"abstract"*/                             
    abstract void makeSound();                                    
    /*可以有方法的实现,只要有一个抽象方法,此类就满足抽象类的条件*/                            
    void move()                                                   
    {                                                             
        System.out.println("In abstract class Animal--------move function");                                              
    }                                                             
    /*可以是空方法,子类可复写或者重载*/                                  
    void eat(){}                                                  
}

public interface Animals {
    
	   void makeSounds();                                                              
	   void moves();/*接口前面的关键字只能为abstract或public*/                                     
	   /*接口里只允许声明方法,不允许有实现,因此下面这个实现了的方法不允许出现在接口定义中*/                                   
	   /*void eats()                                                                   
	   {                                                                               
	        eats code                                                                  
	    }*/                                                                            
}

//空接口 
public interface Animalss {

}

 public class Dog extends Animal implements Animals,Animalss/*抽象类不支持多继承,而接口支持*/    
   {     
		    /*实现了抽象父类唯一的抽象方法makeSound(),自己就不再是抽象类了,另外两个方法move()和eat()直接从父类继承*/       
		    void makeSound()     
		    {     
		        System.out.println("实现了抽象父类唯一的抽象方法makeSound()");    
		    }     
		    /*实现Animals中的方法,注意实现的方法的权限不能低于接口中声明的权限,而接口中声明的方法的权限均为public,所以在实现类的方法前要加关键字public*/    
		    public void makeSounds()     
		    {     
		    	System.out.println("实现了接口中的方法makeSounds()"); 
		    }     
		    public void moves()     
		    {     
		    	System.out.println("实现了接口中的方法moves()"); 
		    }     
   }  
public class TestPrintStream {
	 public static void main(String[] args)
	 {
 
		//以下是一个既是继承了抽象类的子类,又是实现了接口的实现类的例子     
	  Dog dog = new Dog();
	  dog.makeSound();
	 }

}

posted @ 2011-06-22 21:46  lxmanutd  阅读(376)  评论(0编辑  收藏  举报