面向对象学习笔记

来源:互联网 发布:擎洲广达软件 编辑:程序博客网 时间:2024/05/28 05:19

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修饰的内容会在类被加载的时候被创建。
特点:静态成员会在类文件被加载的时候被声明,所以它的声明时间比非静态成员早,因此在静态方法中无法调用非静态的属性和方法,但是非静态方法可以调用静态的属性和方法。静态成员只和类有关,和类的对象没有关系。

原创粉丝点击