码迷,mamicode.com
首页 > 编程语言 > 详细

Java抽象类和接口

时间:2015-07-18 19:46:48      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

抽象类和接口

一、抽象类(abstract)

1.抽象类

  Java可以定义一些不含方法体的方法,它的方法体交给该类的子类根据自己的情况去实现,这样的方法就是抽象方法,包含抽象方法的类叫抽象类。一个抽象类中可以有一个或者多个抽象方法。

  抽象防范必须用abstract修饰符来定义,任何带有抽象方法的类都必须声明为抽象类。

  (1)抽象类定义规则

  a.抽象类必须用abstract关键字来修饰,抽象方法也必须用abstract来修饰;

  b.抽象类不能被实例化,也就是不能用new关键字去产生对象;

  c.抽象方法只需声明,而不需要实现;

  d.含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是一个抽象类。

2.抽象方法的写法

abstract 返回值类型 抽象方法(参数列表)

3.抽象类和抽象方法的例子

1 abstract class Abs{
2     abstract int aa(int x,int y);
3 }

注意:含有抽象方法的类肯定是抽象类,抽象类中的某个抽象方法不一定是抽象的。

二、接口(interface)

1.接口

  如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。接口是抽象方法和常量值的定义的集合,从本质上来讲,接口是一种特殊的抽象类,中抽象类只包含常量和方法的定义,而没有变量和方法的实现。

2.接口定义的例子

1 interface Runner{
2     int ID = 1;
3     void run();
4 }

  在接口Runner的定义中,及时没有显式地将其中的成员用public关键字标识,但是这些成员都是public访问类型的。接口里的变量默认是用public static final 标识的,所以,接口中定义的就是全局变量。

  我们可以定义一个新的接口,用extends关键字去继承一个已有的接口;也可以定义一个类,用implements关键字去实现一个接口中的所有方法;还可以去定义一个抽象类,用implements关键字去实现一个接口中定义的部分方法。

 1 //定义一个接口
 2 interface Runner{
 3     int ID = 1;
 4     void run();
 5 }
 6 //可以定义一个新的接口,用extends关键字去继承一个已有的接口
 7 interface Animal extends Runner{
 8     void breathe();
 9 }
10 //可以定义一个类,用implements关键字去实现一个接口中的所有方法
11 class Fish implements Animal{
12     public void run() {
13         System.out.println("fish is swimming");
14     }
15 
16     public void breathe() {
17         System.out.println("fish is bubbling");
18     }
19 }
20 
21 //可以去定义一个抽象类,用implements关键字去实现一个接口中定义的部分方法。
22 abstract class LandAnimal implements Animal{
23     public void breathe(){
24         System.out.println("LandAnimal is breathing");
25     }
26 }

  在Java中,设计接口的目的就是为了让类不必受限于单一继承的关系,而可以灵活地同时继承一些共有的特性,从而达到多重继承的目的,并且避免了C++中多重继承的复杂关系所产生的问题。多重继承的危险性在于一个类可能继承了同一个方法的不同实现,对接口来讲不会发生这种情况,因为接口没有任何实现。

  一个类可以在继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implements关键字之前。如下:

1 class Student extends Person implements Runner{
2     public Student(int age) {
3         super(age);
4     }
5 
6     public void run() {
7         System.out.println("the student is running");
8     }
9 }

  一个类实现多个接口的例子:

1 class Bird implements Runner,Flyer{
2     public void run() {
3         System.out.println("the bird id running");
4     }
5     public void fly() {
6         System.out.println("the bird is flying");
7     }
8 }

下面是接口中定义常量的实例:

1 public class TestDebug11 {
2     public static void main(String[] args) {
3         Fish fish = new Fish();
4         int j = 0;
5         j = Runner.ID;//格式:类.成员变量
6         j = fish.ID;  //对象名.静态成员
7     }
8 }

3.小结:

a.实现一个接口就是要实现该接口的所有方法(抽象类除外);

b.接口中的方法都是抽象方法;

c.多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口。

Java抽象类和接口

标签:

原文地址:http://www.cnblogs.com/zicheng789/p/4657332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!