Java 抽象,接口

抽象:使用abstract关键字所修饰的类

抽象类无法实例化

使用abstract关键之修饰的方法叫做抽象方法

如果一个雷包含了抽象方法,那这个类一定是抽象类

如果一个类是抽象类,那么这个类可以包含具体的方法

 

接口

java语言不支持一个类有多个直接的父类,但可以用implements 实现多个接口,间接地实现多继承。

 接口特征
1)接口的成员币拿来那个默认都是public static final 类型,必须被显示初始化
2)接口的方法默认为public,abstract类型,没有方法体,不能被实例化

3)只能包含Public, static,final类型的成员和public,abstract类型的成员方法。
4)接口没有构造方法,不能被实例化
5)一个接口不能实现另外一个接口,但可以继承多个其他接口
6)接口必须通过类来实现他的抽象方法
7)当类实现了某个java接口时,他必须事先接口中的所有抽象方法
8)不可以创建接口实例
9)一个类可以集成一个父类多个接口
10)相同的功能可以抽象出一个接口类型
11)接口时构建松耦软件系统的重要法宝,接口描述系统对外提供的所有服务,因此是public类型

 

抽象类和接口的差别
相同点:
代表系统的抽象层---松耦合
都不能被实例化
否包含抽象方法,这些用于描述系统鞥提供哪些服务,三不能具体实现
不同点
抽象类中部分方法提供默认实现,因为允许加入具体方法,不会对子类有影响
接口只包含抽象方法,不可随意改动,会影响实现类
一个类只能继承一个直接的父类,这个服类可以是抽象类,但一个类可以实现多个接口

基本类的定义:

 

 

public class Fruit {

 

    public void price() {

 

       System.out.println("水果价格");

 

    }

 

    public void weight() {

 

       System.out.println("水果重量");

 

    }

 

}

 

抽象类的定义:

 

 

public abstract class Fruit {

 

    public void price() {

 

       System.out.println("水果价格");

 

    }

 

    public abstract void weight();

 

}

 

接口类的定义:

 

 

public interface Fruit {

 

    public void price();

 

    public void weight() ;

 

}

 

从上面我们可以看出接口就是抽象类的升级版,由于该类的方法全是抽象方法,所以把abstract换成interface。而接口的方法必须由子类才能实现。

 

 

 

继承

 

继承基本类,可以继承父类的方法,也可以从些,也可以扩充。下面是实现接口基本类的类:

 

 

public class Apple extends Fruit {

 

}

 

该类中就有Fruit基本类中的两个方法:price()和weight();

 

继承抽象类,必须实现抽象类的抽象方法,可以修改父类的方法,和添加方法。下面是继承抽象类的类:

 

 

public class Apple extends Fruit {

 

    @Override

 

    public void weight() {

 

       System.out.println("水果重量");

 

    }

 

}

 

该类继承类Fruit的price()方法,同时实现了Fruit抽象类的weight()方法。

 

继承接口类(也就实现接口),必须实现接口类的所有的抽象类和添加了。下面是继承接口的类:

 

 

public class Aple implements Fruit {

 

    @Override

 

    public void price() {

 

       System.out.println("水果价格");

 

    }

 

    @Override

 

    public void weight() {

 

       System.out.println("水果重量");

 

    }

 

}

 

该类是实现Fruit接口的所以抽象方法。

 

Java只支持单继承(继承基本类和抽象类),但是我们可以用接口来实现(多继承接口来实现)

 

如:public class Apple extends Fruit implements Fruit1, Fruit2{}

 

一般我们继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字。其实继承是很简单的,可以就是没有弄清这两个关键字,当我们弄清楚也就是比较简单的。

 

接口也可以继承接口如:public interface Fruit1 extends Fruit {}这是接口中的多重继承,同理抽象类和基本类也同理。如果我们把基本类添加final修饰,也就定义该类不被继承,该类不能作为父类。同时基本类的方法可以用public 、private、proptected来修饰方法,用final来阻止继承该方法。

 

 

 

posted on 2013-07-03 16:16  Jane_study  阅读(327)  评论(0编辑  收藏  举报

导航