面向对象的三大特征:
封装 继承 多态
封装
概念:是指隐藏对象的属性和实现细节,仅对外提供公公访问的方法。
好处:复用调用性,安全性
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供对外访问的方法
继承
好处:
1.提高了代码的复用性
2.让类和类之间产生了关系,is-a,给另一个特征提供了前提(多态)
注意:
子类所有的构造方法都会默认访问父类的空参构造方法,因为每一个子类的构造方法的第一行都有默认的super
语句存在,如果父类中没有空参的构造方法,那么子类的构造方法内,必须通过super(1)语句指定要访问的父类
构造方法,如果子类的构造方法中用this来指向子类自己的构造方法,那么被调用的构造方法,也会访问父类的
构造方法。
final特点:
1.这个关键字是一个修饰符,可以修饰类,方法和变量。
2.被final修饰的类是一个最终类,不可以被继承
3.被final修饰的方法是一个最终方法,不可以被覆盖
4.被final修饰的变量是一个常量,只能赋值一次
抽象类的特点:
1.抽象方法只能定义在抽象类中,抽象类和抽象方法都必须由abstract关键字进行修饰
2.抽象方法只能定义方法的存在,并不能定义方法的实现
3.抽象类不可以被创建对象
4.只能通过子类继承抽象类并覆盖抽象类中的抽象方法,该子类才能实例化,否则该自雷也是抽象类
5.抽象类只能单继承
抽象类和接口的区别:
1.抽象类只能被继承,而且只能单继承,接口需要被实现,而且可以被多实现
2.抽象类可以定义非抽象方法,子类可以直接继承使用,接口中都是抽象方法,需要子类来实现
3.抽象类使用的是is-a的关系,接口使用的like-a的关系
4.抽象类的成员修饰可以自己定义,接口中的修饰符都是固定的
多态:
体现:父类的引用或者接口指向自己子类的对象
Animal d = new Dog;//向上转型
Dog d1 = (Dog)d;//向下转型
多态好处:提高程序的扩展性
多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类里面的方 法,不可以访问子类自己的方法
如果要访问子类自己特有的方法就需要强制转换
多态的前提:
1.必须存在关系,比如继承,或者实现
2.一般都会有覆盖操作
单例模式:
解决的问题:保证一个类在内存中的唯一性
1.私有化构造方法
2.在本类中创建对象
3.定义一个方法返回这个对象
DataObject d = new DataObject(); 饿汉 DataObject d = null;懒汉,实现了延迟加载 if(d==null){ d = new DataObject();