java抽象类和接口的区别

直接将正题:看下图通过一个具体实例说明一下,自己理解。

列子说的是一个水果类:任何一个水果都有价格,颜色,类型3中属性(做实现用,呵呵,只是随便取的3个属性),那么我们就可以提一个抽象类,因为这个是共通的,所有水果都有这些特性,代码如下:

1:水果抽象类

package me.test; /** * 水果抽象类。 * @author BTiger * */ public abstract class Fruits { /** * 水果类型(香蕉,苹果等)。 * @author BTiger * */ abstract void type(); /** * 水果颜色。 * @author BTiger * */ abstract void color(); /** * 水果价格。 * @author BTiger * */ abstract void price(); }

2:香蕉类:

package me.test; /** * 香蕉类。 * @author BTiger * */ public class Bananas extends Fruits{ /** * 水果颜色。 * @author BTiger * */ void color() { System.out.println("yellow"); } /** * 水果价格。 * @author BTiger * */ void price() { System.out.println("3.0元/斤"); } /** * 水果类型 。 * @author BTiger * */ void type() { System.out.println("香蕉"); } }

3:橘子类

package me.test; public class Orange extends Fruits{ /** * 水果颜色。 * @author BTiger * */ void color() { System.out.println("red"); } /** * 水果价格。 * @author BTiger * */ void price() { System.out.println("2.0元/斤"); } /** * 水果类型 。 * @author BTiger * */ void type() { System.out.println("橘子"); } }

 

现在有个问题:就是香蕉有国产的,进口的区别,而橘子没有这种区别,怎么办,不可能修改水果抽象类。就只能为香蕉定义一个接口,然后香蕉类实现了这个接口。

简单说,抽象类是一共通类,所有继承这个抽象类都必须有这些特征,然后它可以实现自己独有的某一个接口。

你可能感兴趣的:(java,Class)