Java的抽象类和接口

1、Java的抽象类

(1)用abstract关键字修饰的类被指定为抽象类(充分必要条件)。

(2)含有抽象方法的类必须被声明为抽象类,抽象方法只需声明而不需实现,扩展类必须重写抽象方法。

(3)抽象类只能由其子类来实例化。

(4)抽象类的扩展子类不是必须实现抽象类的抽象方法,此时其子类也是抽象的;子类可以进一步被扩展(继承),看上去就是类的多重继承的关系。

(5)抽象类可以实现一个或多个接口,接口的具体实现可以在抽象类里,也可以放在子类里。

定义抽象类水果(fruit) 
          public abstract classfruit
                  public abstract void eat();
          } 
           如果我们试图用以下语句来获得一个实例,将无法编译成功。 
           fruit f= new fruit (); 

而我们仍然可以构造水果类的子类,如: 
          子类“苹果(apple)” 
           public class apple extendsfruit 
                  public void eat() {

                      System.out.print("eat a apple!");

                   }

           } 
          子类“橘子(orange)” 
           public class orange extends fruit { 
                  
public void eat() {

                      System.out.print("eat a apple!");

                   }

           } 

          可以用子类来实例化。

          fruit f1= new apple();

          fruit f2= new orange ();

2、Java的接口

(1)多个无关的类可以实现同一个接口,同样的,一个类可以实现多个无关的接口。

(2)接口是抽象方法和常量值的定义的集合,接口中只能有抽象方法和常量值。

(3)接口中的抽象方法和常量值默认是public,而且只能是public。

(4)接口可以扩展一个或多个其他接口。

3、java抽象类和接口异同

接口和抽象类显著的共同点是接口和抽象类都可以有抽象方法。 
接口和抽象类的不同点有: 
(1)抽象类可以有实例变量,而接口不能拥有实例变量,接口中的变量都是静态(static)的常量(final)。 
(2)抽象类可以有非抽象方法,而接口只能有抽象方法。

注意:相同的类型用extends连接,不同类型用implements连接。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值