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

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()方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值