java中怎么具体使用抽象类和接口???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎么具体使用抽象类和接口???相关的知识,希望对你有一定的参考价值。

这是我们的作业,不知道该怎么做,讲详细点。。。
import java.awt.Color; //汽车抽象类
public abstract class Car

//公用数据字段声明区
public Color color; //车辆颜色
public int gearNum; //排档数
public String tiretype; //轮胎型号
public float engine; //引擎排气量
//公用抽象方法声明区
public abstract void shiftgear(); //换档
public abstract void brake(); //煞车
public abstract void aircon(); //开冷气
public abstract void headlight(); //开大灯

public interface Gasoline //汽油车接口

public static final String FUEL="gasoline(汽油)";//定义一个最终字段
public void refuel(); //声明一个方法

根据以上代码,定义你自己的车,该车继承自汽车类car并实现汽油车接口。
自己的车属性为:档位为5个档,轮胎型号是BridgeStone185ST,排气量为1598.5。
自己的车的新增的方法有:equipment():输出轿车颜色、轿车排档数、轿车轮胎型号、轿车排气量和轿车燃料。

//继承抽象类Car并实现接口Gasoline
class MyCar extends Car implements Gasoline
//定义一个变量模拟当前档位,如1,2,3,4,5,
public int nowShift;
//无参构造方法,默认设置相关属性
public MyCar()
this.color=Color.red;
this.gearNum=5;
this.tiretype="BridgeStone185ST";
this.engine=(float)1598.5;

//自己创建车时指定相关属性
public MyCar(Color c,int gearNum,String tiretype,float engine)
this.gearNum=gearNum;
this.color=c;
this.tiretype=tiretype;
this.engine=engine;

public void shiftgear()
//简单模拟循环档,每次调用时档位加1,加满后归零
nowShift++;
if(nowShift>=5)
nowShift=0;

public void brake()
nowShift=0;
System.out.println("正在刹车...");

public void aircon()
System.out.println("冷气已经打开");

public void headlight()
System.out.println("大灯打开...");

public void refuel()
System.out.println("轿车燃料为:"+FUEL);

public void equipment()
System.out.println("轿车颜色:"+color+" "+"排挡数:"+gearNum+"\n"+"轮胎型号:"+tiretype+" "+"尾气排量:"+engine+" "+"轿车燃料:"+FUEL);

public static void main(String[]a)
new MyCar().equipment();


main()方法里只测试了自定义的equitment()方法,其他的和他一样调用,如果你需要的话、希望对你有帮助
参考技术A public class MyCar extends Car implements Gasoline

@Override
public void aircon()
System.out.println("冷气开放");


@Override
public void brake()
System.out.println("刹车!");


@Override
public void headlight()
System.out.println("开启大灯!");


@Override
public void shiftgear()
System.out.println("换档!!");


@Override
public void refuel()
System.out.println("执行refuel方法!");


public void equipment()
System.out.println("颜色="+this.color+ " 排挡数="+this.gearNum+" 轮胎型号="+this.tiretype+" 排气量="+this.engine+" 燃料="+this.FUEL);


public static void main(String args[])
MyCar myCar = new MyCar();
myCar.color=new Color(255,0,0);
myCar.gearNum=5;
myCar.tiretype="BridgeStone185ST";
myCar.engine=1598.5f;
myCar.aircon();
myCar.shiftgear();
myCar.brake();
myCar.headlight();
myCar.equipment();


参考技术B 自己的类mycar要继承抽象类Car,用extends,实现Gasoline接口用implements,如下:
public mycar extends Car implements Gasoline()
在你的类里面实现其中的抽象方法即可。

Java中的抽象类和接口

想要了解接口我们要先知道抽象类。那么什么是抽象类呢?

问题描述:生活中我们有很多的对象是无法具体描述的,比如说:我们可以说四边形有四条边。或者具体点说就是矩形两边对称且相等,正方形四边对称且相等。但是对于普通的图形而言就很难具体描述了。转换成Java语言就是说:对于一个很具体的类我们可以很方便的定义它的各种属性和方法,但是对于有一些类我们却难以了解它的方法时如何实现的。这时我们就可以用到抽象类。

抽象类的语法格式如下:

1 public abstract class 类名{
2   abstract 返回值类型 方法名(参数列表);//定义抽象方法      
3 }

定义抽象方法的关键字是:abstract。

使用abstract定义的类称为抽象类,而使用abstract定义的方法称为抽象方法。

抽象方法没有方法体,本身也没有任何意义,因此抽象类是不能够被实例化的。

当它被其子类继承时,子类必须实现其中的抽象所有方法。

只要类中有一个抽象放方法,此类就必须定义为抽象类。

 

了解了抽象类,我们继续思考下面的问题,来看先下面一段代码:

public abstract class shape 
{
    //定义一个图形抽象类
    public abstract void toString();//toString抽象方法
    public abstract void paint();//画图的抽象方法
}

public class triangle extends shape
{
    public void toString()
    {
        system.out.println("toString");
    }

    public void paint()
    {
        system.out.println("paint");
    }
}

这样看起来好像没有什么问题。如果我们有些类中不希望它有paint方法怎么办?把paint方法放到另一个类中?但是其它的类还要使用这个方法。而Java的语法规定了,类是不能多继承的,怎么办?这时我们就可以考虑使用接口了。

接口是抽象类的延伸,解决了Java中不能多继承的缺点。我们可以把paint方法封装到一个接口中,然后让需要用的图形类的子类实现这个接口。而Java中一个类是可以实现多个接口的,我们可以把不同的方法封装在接口中,交给类来使用。

接口的关键字是interface。其定义如下:

public interface 接口名  extends 类名  implements 接口,....{
  //定义常量
  public static final 数据类型 常量名=值;
  //定义抽象方法
  public abstract 返回值类型 方法名 (参数列表);        
}

要注意的是:1.接口不能被实例化   2.接口的访问修饰符只能是public  3.接口会默认提供public abstract static final关键字

ps:小白上路,欢迎指正。

以上是关于java中怎么具体使用抽象类和接口???的主要内容,如果未能解决你的问题,请参考以下文章

[Java] 抽象类和接口

Java抽象类和接口

java抽象类和接口

Java中的抽象类和接口

java 抽象类和接口

java抽象类和接口