java抽象类接口实例_java抽象类与接口实例源码介绍

java抽象类与接口实例源码介绍。

首先是抽象类:

是一种特殊的类,请注意,它是类!用abstract修饰。

它里有可以有未实现的方法,也可以有已实现的方法。未实现的方法,要用abstract修饰。已实现的方法,和普通的类中的方法没有区别。

它不能被实例化,只能被继承。

下面看一个例子

package wzq.j2se;

public abstract class Abstract1 {

public void af1(){

System.out.println(“Abstract1-af1″);

}

public abstract void af2();

public static void main(String[] agrs){

Abstract1 a1 = new Abstract2();

a1.af1();

a1.af2();

}

}

class Abstract2 extends Abstract1{

@Override

public void af2() {

System.out.println(“Abstract2-af2″);

}

//试试这儿,覆盖和不覆盖有什么区别!

public void af1(){

System.out.println(“Abstract2-af1″);

}

}

可以看到,如果我们new Abstract1()编译就会报错:“不能实例化这个类型!”

而关于继承的规则,它和普通的类继承基本一样。调子类和父类的方法,关键是看new的是子类还是父类,也就是说这个对象的类型决定了调用哪个类里面的方法。

值得注意的是,一但继承了它,就必须实现里面的未实现的方法。为什么要这样呢?我认为最有可能是这个原因:

如果子类不实现它的抽象方法,那么当new出来的子类对象调用到这个方法的时候,会出现什么情况?在子类和父类均未实现这个方法的情况下,你叫java虚拟机情何以堪?

简而言之,如果子类和父类都没实现这个方法,无论new出来的对象是谁,调用这个方法显然是不符合逻辑的。

所以说,子类一定要实现父类未实现的方法。在java的语法中,只有抽象类和接口有未实现的方法,而且,这两者都要求子类实现未实现的方法。

然后是接口:

一个类里面,全是未实现的方法。它不是class,而是interface!

由于它里面的方法全是未实现的方法,所以就不用多此一举,像抽象类一样给未实现的方法加个标识了。

public interface inter1{

public void fun1();

}

以上就是一个完整的接口声明。

它基本和抽象类一样,最大的区别就是,它里面的方法全是未实现的,而且抽象类用extends而接口用implements.

接口的变量只能 public static final 修鉓,方法只能用abstract和public修鉓。因为接口是公用的,所以不可能有私有的变量和方法。

而抽象类,保留了类的大部份基本属性,也就是说,私有,公有都可以用。我们在抽象类里面写一个private int a;是完全没有问题的!

类只可以继承一个,而接口可以实现多个!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值