抽象类
当一个类被abstract关键字修饰时,该类被称为抽象类
抽象类与普通类的最大区别就是:
普通类可以被实例化,而抽象类不能被实例化
抽象方法与普通方法的最大区别就是:
普通方法有方法体,抽象方法没有方法体
抽象
父类
public abstract class Pet { String Name; int love; int health; public abstract void eat(); }
子类
public class Dog extends Pet{ String brend; public String getBrend() { return brend; } public void print(){ System.out.println("一只小修狗"); } @Override public void eat() { System.out.println("修狗吃狗粮"); } }
Mian方法
public static void main(String[] args) { Dog dog = new Dog(); dog.print(); dog.eat(); }
抽象方法所在类必须是抽象类,但抽象类中也可以包含普通方法,还可以包含普通类包含的一切成员
一个方法被定义为抽象方法,意味着该方法不会有具体的实现,而在抽象类的子类中通过方法重写实现
接口(interface)
接口是一个不能实例化的类型
接口是一种能力
接口是一种约定
接口比抽象类更好的特性:
1.可以实现多个
2.设计和实现完全分离
3.更自然的使用多态
4.更容易搭建程序框架
5.更容易更换实现
接口之间可以通过extends关键字实现继承关系,一个接口可以继承多个接口,但接口不能继承类
一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承一个父类并实现多个接口
public class AptitudeHandset extends HandSet implements Network,PlayWiring,TheakePictures{ }
面向对象设计原则:
1.摘取代码中变化的部分,形成接口
2.多用组合,少用继承
3.面向接口编程,不依赖于具体实现
4.针对扩展开放,针对改变关闭