----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
抽象类:
是指高度的抽象提取共性部分,只声明方法的存在,而不去具体的实现它的类,是一个概念性的描述。
例如:宠物类:
public abstract class Pet {
private String name; //宠物的名字
private String sex; //宠物的性别
private int health; //宠物的健康值
abstract void tohospital(); //宠物看病
}
}
在calss关键字之前加一个abstract关键字,比如这段代码中abstract class Pet,那么抽象方法就是只声明方法的存在,并不给出具体的方法实现。
抽象方法的语法:
就是在方法返回值前加关键字 abstract 而且没有{}括号及方法体内容,由分号结束;
注意事项:
1.抽象类不能被实例化
2.子类如果不是抽象类,则必须重写抽象类中的全部抽象方法。
3.abstract修饰符不能和final修饰符一起使用
4.abstract修饰的抽象方法没有方法体
5.private关键字不能修饰抽象方法
接口:
简单地说,接口是一个不能实例化,且只都拥有抽象方法的类型(接口不使用class关键字定义,不等于类)
对比抽象类和接口:
区别:抽象类使用abstract声明,接口使用interface声明,抽象类除了抽象方法,还可以拥有普通方法,接口中只有抽象方法。
相同:都不能实例化;
为什么需要抽象类?
抽象类可以将已经实现的方法提供给其子类使用,使代码可以复用;
同时抽象类中的抽象方法,保证了子类还具有自身的独特性。
为什么需要接口:
摘取代码中变化的行为,形成接口。
接口是针对行为而言的(重点)
使用接口可以很好的隐藏代码的细节,从而解决代码维护不易的问题
总结:1,抽象类便于复用 2,接口便于代码维护
抽象类是对对象的抽象,接口是对方法的抽象
----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------