面向对象的特征:封装,继承,多态
面向对象特征—封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 。
对类的某些信息进行隐藏,使用访问权限修饰符向外界提供方法类访问
设计模式:前人总结出的解决某类问题的最优方案——模板
1.属性私有化是封装的一种体现,提供外界能够访问到的方法
2.构造方法私有化
优点:
1.只能通过规定方法访问
2.隐藏类的实现细节
3.方便加入控制语句
4.方便修改实现
面向对象特征—继承
继承是面向对象程序设计不可缺少的设计思想,是实现代码可重用的根基,是提高代码可扩展性的主要途径。
子继承父类,使用父类中已经实现好的功能,而且子类还可以扩展自己的特有的功能。
面向对象设计宗旨:代码复用性高,代码扩展性。
什么情况下使用继承?满足什么是什么,is —a关系(继承),猫是动物,狗是动物。
具体的语法:使用extends关键字。
构造方法:子类构造方法会先调用父类构造方法
将构造方法私有化,在程序的其他地方就不能随意的调动构造方法
向外界提供一个方法,用来获得创建的唯一对象,在类内部控制起来比较方便
构造方法作用:初始化对象,对象属性赋值
使用super关键字调用父类任意一个构造方法,必须写在构造方法的第一行
如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用基类无参数的构造方法。
super关键字
使用super关键字访问父类成员
用super.成员变量名来引用父类成员变量
用super.方法名(参数列表)访问父类的方法
用super.构造方法(参数列表)访问父类构造方法
方法重写
在子类中把父类中的某一个方法在子类中重写,从而覆盖掉父类中的方法
什么时候重写:当父类的实现方式不能满足/与子类不同时,需要在子类中对父类方法进行重写覆盖
@override表示此方法是从父类中重写而来的。
重写父类的方法要求:方法名与在父类中的一致,参数一致,访问权限一致
重写规则:
1.方法名相同、参数列表相同;
2.返回值类型相同;
3.访问权限不能小于父类权限;
构造方法、静态方法不能重写,成员变量不存在重写
抽象类
当一个类中含有不具体的内容时。
用abstract修饰的类就是抽象类,如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。
若父类为抽象类,则子类必须为抽象类或者将父类中的抽象方法重写。
特点:
1.抽象类不能被实例化,但可以有构造方法,因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
2.抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一 样。否则,该类也必须声明为抽象类。
eg:动物是一个比较大的概念,里面定义的吃东西的方法具体的实现。但是子类与动物类中吃的多数不同,那么在父类中的实现就有些可以在动物类中。