面向对象三大特征概述
封装
1、什么是封装?作用是?
eg:电视剧、手机,人们不需要关心内部的复杂结构,只需要注重如何操作,对于程序员来说,只需要通过一个简单的入口就可以进行访问,不需要关系代码的复杂实现,此外,类中的一些安全级别较高的数据进行封装后,外部人员不能随意访问,从而做到了保证数据的安全性。
作用:1、保证内部结构的安全 2、屏蔽复杂的实现,暴露简单。
2、如何进行封装
1.对属性进行私有化( 修饰符 private) 只进行本类中数据访问,不向其他类提供数据访问权限。
2. 同时进行添加实例方法 get(),set()方法,用来作为入口,根据实际情况,在set()或者get()方法中添加逻辑语句,从而达到对属性的操作。
继承 extends
1、什么是继承?作用是?
eg: 父亲很有钱,那么儿子也会很有钱。
作用:继承可以解决代码复用,子类继承父类。主要作用 : 方法的覆盖和多态机制都离不开继承。
继承的相关特性
1、 B类继承A类,则称A类为超类(superclass)、父类、基类,
B类则称为子类(subclass)、派生类、扩展类。
class A{}
class B extends A{}
我们平时聊天说的比较多的是:父类和子类。
superclass 父类
subclass 子类
2、 java 中的继承只支持单继承,不支持多继承,C++中支持多继承,
这也是 java 体现简单性的一点,换句话说,java 中不允许这样写代码:
class B extends A,C{ } 这是错误的。
3、 虽然 java 中不支持多继承,但有的时候会产生间接继承的效果,
例如:class C extends B,class B extends A,也就是说,C 直接继承 B,
其实 C 还间接继承 A。
4、 java 中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承。
但是私有的属性无法在子类中直接访问。(父类中private修饰的不能在子类中
直接访问。可以通过间接的手段来访问。)
5、 java 中的类没有显示的继承任何类,则默认继承 Object类,Object类是
java 语言提供的根类(老祖宗类),也就是说,一个对象与生俱来就有
Object类型中所有的特征。
6、 继承也存在一些缺点,例如:CreditAccount 类继承 Account 类会导致它
们之间的耦合度非常高,Account 类发生改变之后会马上影响到 CreditAccount 类
多态
1、概念:两种转型,java中允许向上转型和向下转型。
1、向上转型 :子 ----> 父 eg. Cat(子类)--> Animal(父类)
Animal a = new Cat(); // 底层对象是一只猫,父类引用指向猫。
a.移动方法 // 如果Animal类和Cat类中都有移动方法,Animal类引用的移动方法,则是Cat的移动方法。
2、向下转型 :父 ----> 子 eg. Animal(父类) --> Cat(子类)
Animal b = new Cat();
Cat c = (Cat) b; // 向下转型 也可以叫做强制类型转换,(Cat) 叫做强制类型转换符。父类中没有抓老鼠方法,抓老鼠方法是Cat子类特有的方法,想用抓老鼠方法,就得进行向下转型。
c.抓老鼠方法
注意:无论是向上转型,还是向下转型 两种类型之间必须有继承关系,否则无法进行互相转型。
2、什么是多态?
多种状态,多种形态。父类型引用指向子类型对象,包括编译阶段和运行阶段,编译阶段进行绑定父类的方法,运行阶段动态绑定子类型对象的方法。
分析:java程序分为编译阶段和运行阶段,编译时看 左边,运行时看 右边,先编译,再进行new对象,只有编译通过的代码才能运行,没有编译,就运行不了。
3、在开发中的作用
降低程序的耦合度,提高程序的扩展力。面向抽象编程,不建议面向具体编程。
软件开发中有条原则:OCP (开闭原则)意思是对扩展开放,对修改关闭,在扩展过程中,修改的越少越好,修改的越多,风险越高。