您的位置:首页 > 编程语言 > Java开发

Java 抽象,接口

2013-07-03 16:16 134 查看
抽象:使用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来阻止继承该方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: