java基础
**
接口抽象类
**
多态不急,在这里,我们来介绍抽象类和接口这两个东西!!!

我们之前一直接触的都是类(class),那么根据需要,我们有时会创建抽象类或者接口。且听我细细道来这俩是什么鬼!!!

抽象类:abstract
位置:类
特点:具有抽象方法,其它同类
那这个抽象方法是个什么鬼!!!
我们一般把我们不能理解,不能具象的事物称为抽象。我记得绘画中就有个抽象,就像这样—>

是不是我们不能理解,至于看出来什么只有自己知道。一千个人有一千个哈姆雷特,每个看到这副抽象画都有能看到一些自己的东西。
而Java中的这个抽象方法也和这个类似,给一个方法,具体东西让用的人去填,是不是就像那抽象派画家一样(手动嘚瑟^^)!!!
来,先上代码,看看这个怎么声明!!!
abstract class A{
//普通方法
public void talk(String str){
System.out.println("A talk:"+str);
}
//抽象方法
public abstract void talk();
}
来,
看到这抽象方法啥也没有么。所以它被称为抽象方法。
那么
注意:
1、抽象类可以有抽象方法和普通方法(也可以没有)
2、抽象类可以被抽象类继承
3、抽象类可以被类继承,但必须重写所有抽象方法(将方法具象化)
4、抽象类不能直接实例化(…)
抽象类就先到这,先看看接口

接口:
接口,我们俗称抽象的抽象
特点:无普通方法,全为抽象方法
先上代码看看这接口
interface A{//声明接口
public void talk();//抽象方法
}
注意:
1、接口内不允许有非抽象方法
2、接口不能直接实例化(…)
3、接口不是继承关系,而是实现
interface A{
public void talk();
}
class B implements A{
@Override
public void talk() {
System.out.println("talk");
}
}
来,我们那接口和抽象类比较一下
方法 | 关系 | 关系数量 | 实例化 | |
抽象类 | 有抽象方法 | 继承extends | 单一继承 | × |
接口 | 全抽象方法 | 实现implements | 可实现多个 | × |
来段代码看看
interface A{
public void talk();
}
interface B{
public void talk();
}
abstract class C{
public abstract void talk();
}
class G extends C implements A,B{
@Override
public void talk() {
System.out.println("talk");
}
}
最后,我们要注意封装关键字对接口抽象类的使用
1、因为抽象方法的性质,抽象方法不能用private、final关键字
2、相应的final不能用于抽象类和接口上
3、接口内只能public关键字或默认
4、接口内抽象方法不能使用protected
5、抽象类可以implements多个接口,但接口不能extends抽象类
6、接口通过extends继承(多个)父接口
说了这么多概念,什么时候用才是问题!!!
这个嘛

嗯嗯,这个嘛

“做人留一线,日后好相见”
这个代码也一样嘛
程序开发很难一次做到完美,我们尽可能给后面修改留有余地,这就需要我们三大特征
用抽象类还是接口,归根接地还是尽可能地职责分离,把业务抽象,也就是“面向接口编程”。
面向接口编程暂时不急,先会用接口即可

上一篇 》
方法重写与重载
下一篇
》
this和super关键字
》
面向对象——多态