抽象类和抽象方法以及和接口的区别

abstract

抽象类是不能被实例化的类,可以由其子类来实例化,就像模板一样(就像猫科,犬科),目的是根据其格式和要求来新建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract。

抽象类中的两种方法:抽象方法和非抽象方法

                                   抽象方法前面由abstract关键字,这种方法只声明返回的数据类型、方法名称和所需的参数,没 有方法体,也就是说抽象方法只需要声明而不需要实现。

                                   非抽象方法和正常类中方法一样。

抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。

抽象类中可以包含构造方法, 但是构造方法不能被声明为抽象。

abstract不能与private、static、final、native并列修饰同一个方法或类。



程序举例:
abstract class Animal    //定义抽象类
{
    String str;
    Animal(String s)     //定义抽象类的一般方法
   {
        str=s;
   }
    abstract void eat();      //定义抽象方法
}
class Horse extends Animal     //定义继承Animal的子类
{  
    String str;
    Horse(String s)
   {
      super(s);      //调用父类的构造方法
   }
    void eat()      //重写父类的抽象方法
   {     
      System.out.println("马吃草料!");
   }
}



抽象类和接口的区别

1.一个类可以实现多个接口,但只能继承一个抽象类,它不能是猫科类同时还是犬科类

2.一个抽象类可以有若干抽象方法(可以是抽象的,也可以是非抽象的),接口里的都是抽象方法,即使不用abstract关键字

3.抽象类可以有构造方法,而接口不能有

4.抽象类的修饰符可以是public ,private ,protected或无修饰符(包内可见),而接口的修饰符只能是public ,或无修饰符(包内可见)

5.抽象类是从object类派生而来,它继承了object的clone()和equals()方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章