黑马程序员------- 抽象类和接口-------

------- android培训java培训、期待与您交流! ---------- 

抽象类概述(abstract)
抽象定义:
抽象就是从多个事物中将共性的,本质的内容抽取出来。
例如:狼和狗共性都是犬科,犬科就是抽象出来的概念。
抽象类:
Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象方法的由来:
多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。
例如:狼和狗都有吼叫的方法,可是吼叫内容是不一样的。所以抽象出来的犬科虽然有吼叫功能,但是并不明确吼叫的细节。
抽象类的特点
1 抽象方法一定在抽象类中
2抽象方法和抽象类都必须被abstract关键字修饰
3 抽象类不可以用new创建对象,因为调用抽象方法没意义
4 抽象类中的抽象方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用; 如果子类只覆盖了部分的抽象方法,那么该子类还是一个抽象类。
4 抽象类中可以有抽象方法也可以有非抽象方法
5 抽象类和一般类没有太大的不同:   该如何描述事物,就如何描述事物,只不过,该事物出现了一些看不懂得东西。这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体,也就是比一般类多了抽象方法而已.
特殊:抽象类中可以不定义抽象方法,这样做仅仅是不让该类建立对象
接口
格式:
    interface 接口名{}
接口中的成员修饰符是固定的。
成员常量:public static final
  接口里面定义变量是全局常量,而且上面三个关键字都可以省略,而且只能是 public static final
成员函数:public abstract
  接口里面定义的方法都是抽象的,而且上面的两个关键字也是可以省略的
接口中的成员都是public的。
接口的出现将“多继承”通过另一种形式体现出来,即“多实现”。(implements)
举例:定义一个接口,让子类去实现它并重写接口里面的方法(接口编译后也是.class文件)
定义:是抽象方法和常量值的集合
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现(等边三角形是特殊的等腰三角形)
举例:interface Demo {
 public static final int id = 1;
 public abstract void start();
public abstract void run();
 public abstract void stop();
继承和实现的区别
类与类之间称为继承:因为该类无论是抽象的还是非抽象的,它的内部都可以定义非抽象方法,这个方法可以直接被子类使用,所以子类继承就可以应用了
类与接口是实现关系:因为接口中的方法都是抽象的,必须由子类实现才可以实例化,所以就用了这个关键字implements
接口与接口之间是继承关系:一个接口可以继承另一个接口,并添加新的属性和抽象方法,并且接口可以多继承
根据上面的接口的这些特点,我有一个经典例子,就是女明星认干爹,大家也可以动脑想个例子
接口实例:
interface 山寨 {
String COLOR = "red";
 void copy();
}
class China implements 山寨{
void speak(){
System.out.println("说中文");
}
void copy(){//会不会报错?为什么?
 System.out.println("一直在模仿从未被起诉");
 }
 public static void main(String[] args) {
China c = new China();
c.speak();
c.copy();
System.out.println(山寨.COLOR);

 }
单继承和多实现
类只能单继承,而接口可以多实现
java将多继承机制进行改良,通过多实现接口的形式来体现
为什么不支持多继承呢?
因为你继承的多个父类中定义了相同的方法,而方法内容不同,jvm无法判断选择哪个个父类的方法,有安全隐患
而多实现就没有这个问题,既是是多个接口中都有相同的方法,但是他们都没有方法体
多实现的好处,一个类继承另一个类的同时可以实现多个接口,一个女星只能有一个亲爹,但是干爹就可以有很多了.多实现的好处是扩展了功能
接口的出现打破了单继承的局限性

接口的特点
接口是对外暴露的规则。
接口是程序的功能扩展。
接口的出现降低耦合性。(实现了模块化开发,定义好规则,每个人实现自己的模块,大大提高了开发效率)
接口可以用来多实现。
多个无关的类可以实现同一个接口.
一个类可以实现多个相互直接没有关系的接口
与继承关系类似,接口与实现类之间存在多态性
接口与抽象类
共  性:都是不断抽取出来的抽象的概念
区别 1:抽象类体现继承关系,一个类只能单继承
接口体现实现关系,一个类可以多实现
区别 2:抽象类是继承,是 "is a "关系
接口是实现,是 like a"关系
区别 3:抽象类中定义体系中的基本共性功能
接口通常定义体系中对象的扩展功能
区别 4:抽象类中可以定义非抽象方法,供子类直接使用
接口的方法都是抽象,接口中的成员都有固定修饰符


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值