面向对象知识点整理(1)
1.封装
封装的好处
1、提高了代码的复用性。
2、隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。
3、提高了安全性。
2.继承
概念
类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。
注意 :1.对于父类private 修饰的成员,子类只有拥有权没有使用权,不能够直接访问,但是可以通过父类的public 方法(get)访问
2.被final修饰的成员也不可以被继承
继承的好处
1.继承的出现提高了代码的复用性,提高软件开发效率。
2.继承的出现让类与类之间产生了关系,提供了多态的前提。
继承的特点
1.单继承性(一个类只能继承一个父类)
2.多个类可以继承一个父类(一个类可以有多个子类)
3.可以多层继承(一个类的父类可以再去继承另外的父类)
4.子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。
继承中成员变量的特点
1.父类中的成员变量是非私有的,子类中可以直接访问,若父类中的成员变量私有了,子类是不能直接访问的。
2.当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。
super用来表示当前对象中包含的父类对象空间的引用。
继承中成员方法的特点
1.当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,
若子类中存在就会执行子类中的方法,
若子类中不存在就会执行父类中相应的方法。
2.子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。
(子类方法覆盖父类方法,必须要保证权限大于等于父类权限)
3.多态
多态的概念
最终多态体现为父类引用变量可以指向子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法(原因是父类可能是接口或者父类的方法是抽象方法)。
多态中成员变量的特点
编译时期:参考的是父类中是否有被调用的成员变量。没有,编译失败。
运行时期:也是调用父类中的成员变量。
简单记:编译和运行都参考等号的左边。编译运行看左边。
多态中成员方法的特点
编译时期:参考父类,如果父类中没有调用的方法,编译失败。
运行时期:参考子类,并运行对象所属类中的成员方法。
简而言之:编译看左边,运行看右边。
总结:无论是成员变量还是成员方法 编译 都参考父类,父类中没有编译失败;
运行时成员变量看父类,
成员方法分情况:
如果父类成员方法是静态方法,是不允许子类重写的,所以参考父类;
如果不是静态的则参考子类重写后的方法;
因为编译都是参考的父类所以无法访问到子类中独有的成员;如果要访问必须要向下转型(强转);
强转的前提是该对象已经是一个向上转型的对象;
多态的好处:
隐藏了子类类型,提高了代码的扩展性。