您的位置:首页 > 编程语言

面向对象学习笔记

2017-08-24 08:57 148 查看
OOP的三大特点:(封装、继承和多态)

注意:OOP是一种编程思想,描述起来比较复杂,所以针对OOP归纳出了三大特点。

OOP三大特点之封装:

思想层面:封装是面向对象思想的基础,因为封装是对象独立行的基本体现。我们认为一个对象具有属性和方法,因此属性和方法是界定对象的核心。封装可以让对象自身的属性和方法被访问的方式更加的规范。

应用层面:我们将类中几乎所有的属性都设定为private,然后再创建对应属性的set/get方法,因此外部的类尝试访问对应的属性的时候,必须通过调用set/get方法,我们可以在方法中进行控制,让访问更加的安全和规范。

OOP三大特点之继承:

思想层面:如果我们发现某些类的属性和方法比较类似,这时候便有了继承的概念,我们可以提取一些相同的属性和方法,定一个父类,然后继承这个父类。之后便可以轻松的实现代码的复用。

应用层面:使用extends关键字实现类的继承,被继承的类称为父类,继承者称为子类,子类默认拥有父类中定义的属性和方法。

注:

方法的重载:同一个类中可以存在多个相同方法名不同参数列表的方法。

方法的重写:两个方法拥有相同的方法名、返回值和参数列表,不同的方法体。

OOP三大特点之多态:

思想层面:多态基于继承,没有继承就没有多态。继承是单向的,对于父类来说不够灵活,而多态可以使父类更加灵活。

例:

Animal是父类,Cat和Dog都继承Animal类,于是多态则表现为:

Animal animalCat = new Cat();

Animal animalDog = new Dag();

应用层面:多态的含义是父类的对象可以保存子类的实例。声明一个父类对象的时候,父类可以灵活的调用子类重写的方法,但是无法调用子类独有的方法。

总结:OOP的三大特点分别是封装、继承和多态。其中封装体现了对象的独立性,继承让类之间实现了代码的复用,多态对于继承有补充的作用。另外还存在一个抽象的概念,我们将客观的对象设计为类的时候,需要经过一个抽象的过程,实际上我们只是抽象出我们程序所需要的对象的属性和方法,而不是让类完全跟现实生活中的对象对应起来。

构造方法:

概念:创建对象的时候默认调用的方法。

特点:构造方法是一个方法,它的名字必须和类名相同,并且没有返回值,当我们没有写构造方法的时候,系统会默认调用一个没有参数没有内容的构造方法。

注意:

以前我们认为创建对象的语法:类名 对象名 = new 类名();

实际上创建对象的语法应该是:类名 对象名 = new 构造方法();

接口和抽象类

接口:

概念:形式和类比较类似,但是关键字是interface,不是class。接口的意义:定义规范(接口可以定义一个实体应当具备什么方法,但是接口不实现方法)。

特点:接口中只能存放抽象方法(抽象方法是没有方法体的方法)。接口也可以实现多态。

用法:接口可以被类实现(这种关系比较类似于继承),而且会要求类实现接口中全部的抽象方法。接口无法实例化。一个类可以实现多个接口,接口与接口之间用“,”隔开。

意义:接口用来定义一些规范,活用接口更有利于我们构建项目。一个好的项目,应该先定义种种接口,定义好一些规范,然后再写实现类,完成具体的功能。编写接口可以让项目的结构更加清晰,编码更加灵活。

抽象类:

概念:拥有抽象方法的类称为抽象类,这个抽象方法和接口中的抽象方法是同一个概念。抽象类中可以同时存在抽象方法和一般方法,抽象类中也可以没有抽象方法,但是有抽象方法的类必须是抽象类。

特点:因为抽象类中可能包含抽象方法,所以抽象类也被语法规定不能被实例化,本质还是类,所以可以被继承。同样,自身的抽象方法被继承之后也需要子类重写,与接口类似。

用法:抽象类自身也可以实现接口,并且自身也可以重写父接口的抽象方法,还可以定义属性以及写一般方法。

意义:抽象类介于接口和类之间,自身可以实现方法,也可以定义规范。

接口和抽象类异同:

不同点:

Java中规定只能单继承,而一个类可以实现多个接口。

接口更多的是模板或者是定义规范,抽象类可以承担模板或者定义规范的角色,也可以自行实现一些方法。

接口中只能存放抽象方法,抽象类中可以存放一般方法。

相同点:都可以存放抽象方法。

静态成员:

概念:被static修饰的内容称谓静态成员,被static修饰的内容会在类被加载的时候被创建。

特点:静态成员会在类文件被加载的时候被声明,所以它的声明时间比非静态成员早,因此在静态方法中无法调用非静态的属性和方法,但是非静态方法可以调用静态的属性和方法。静态成员只和类有关,和类的对象没有关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息