先说接口:接口有接口继承接口和接口的实现单个接口的实现很好理解:如“大雁”类实现了“飞翔”接口定义“大雁”类的时候直接重写“飞翔”接口中的方法就行了另一种是接口继承接口我们假设篮球运动员需要发球,女孩子需要生孩子,那么女子篮球运动员又会发球又能生孩子我们定义了一个发球的接口和一个生孩子的接口发球
生孩子
注意这里针对女子篮球运动员有两种写法个人感觉工作中是根据工作要求的不同选择不同的写法像我们前面说的女子篮球运动员又会发球又能生孩子我们可以选择同时实现这两个接口
public class WomenBasketballPlayer implements ServeBall,GiveBirth {
@Override
public void HaveBaby() {
// TODO Auto-generated method stub
}
@Override
public void ServeBalls() {
// TODO Auto-generated method stub
}
}
同样我们也可以说生孩子是女运动员的专属权利,让“生孩子”接口去继承“发球”接口
然后我们去实现生孩子接口就行了
public class WomenBasketballPlayer implements GiveBirth {
@Override
public void HaveBaby() {
// TODO Auto-generated method stub
}
@Override
public void ServeBalls() {
// TODO Auto-generated method stub
}
}
综上我们可以看出来,如果只是针对女篮球运动员,这两种写法就没什么问题,可要是女游泳运动员呐?不会发球,这么写就有问题了,只能去实现单个的接口。所以这个具体怎么写还要大家仔细慢慢的去分析。再次强调一下,java不支持类的多继承,但是支持类实现多个接口。
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。我们继续定义上面类似的方法我们首先定义了一个抽象的发球类,然后尝试像接口那样定一个方法,但是当我们定义方法的时候,我们遇到了如下的错误提示,这里是和接口不一样的放:如果不是抽象方法,需要添加方法体,也就是大括号。直接定义一个抽象方法,抽象方法由继承该类的子类实现好吧!那我们就定义两个方法,发球的时候需要眼神沟通,那么我就定义一个“眼神沟通”的抽象方法和一个发球的具体方法。
public abstract class AbsServeBall {
public void AServeBall(){
System.out.println('周琦一样的发球你接不到');
}
public abstract void EyeCommunicate();
}
顺便还定义一个生孩子的接口和喂奶的抽象类吧生孩子
喂奶
public abstract class FeedMilk {
public void display(){
System.out.println('FeedMilk');
}
}
然后我们定义一个超级女子篮球运动员的类看看怎么去实现我们之前定义的方法这里我们可以看到抽象类也好还是一般的类也好,类里面的已经定义好的具体方法都不需要我们再去实现了,用的时候直接调用就好了,这里只需要实现EyeCommunicate()就行了
public class SuperWomenBasketballPlayer extends AbsServeBall{
@Override
public void EyeCommunicate() {
// TODO Auto-generated method stub
System.out.println('Go there and get ball!');
}
}
我们想到我们继承的类中还有一个“周琦一样的发球”,这个方法就是不同的方法,定义一个类的实例然后调用这个方法
文章为作者独立观点,不代表股票交易接口观点