面向对象基础

2018-09-03  本文已影响58人  shiyuzhe

最近在找工作,发现java基础好多记不太清了,写篇文章记录下,也希望对你有帮助,有不对或不严谨的地方望不吝赐教。

面向对象的基本要素:封装,继承,多态

封装:隐藏事物内部实现细节,以提高安全性和简化编程。合理的定义边界来避免外部使用者接触到内部的细节。

继承:继承是代码复用的机制,子类会继承父类的特征与行为。但是一种紧耦合的实现,父类修改代码会改变子类的行为。

多态:多态是一种同一个行为可以具有多个不同表现形式或形态的能力。讲到多态可能会立即想到重写、重载和向上转型。重写是父子类中重名方法和参数的不同实现。重载是同名方法和返回值不同参数的实现。向上转型是说父类的引用指向子类对象。

抽象类与接口

抽象类是不能实例化的类,用abstract关键字修饰class,目的主要是代码重用。抽象类的抽象方法可以有0到N个。大多使用于抽取相关java类中的共同方法或成员变量,然后通过继承的方式来达到代码复用的目的。

接口是对行为的抽象,是抽象方法的集合,利用接口可以达到API定义和分类的目的。接口中任何变量都隐式声明为public static final,任何方法都隐式声明为public abstract。使用接口需要注意接口分离(Interface Segregation),毕竟接口每次改变都需要去修改对应的实现类。也要尽量保持接口小粒度,毕竟不是所有实现类会用到接口中所有的方法。

在使用中能用接口的地方就不要使用抽象类,毕竟java是单继承的。

static和final

使用抽象类和接口的时候难免会用到static和final来修饰。

final可以用来修饰类、方法和变量,分别有不同的意义。用来修饰class表示不可继承与扩展,用来修饰变量表示不可修改,用来修饰方法表示不可重写。final对象产生了某种程度上的不可不(immutable)效果,但它并不等同于immutable。final只能约束对象的引用不可被赋值,但是不会影响到对象的行为,例如用final修饰一个List,再给list添加元素是完全正常的。

static方便在没有创建对象的情况下来进行调用(方法/变量)。在类被加载的时候创建,不可调用非静态方法或成员变量,毕竟非静态方法或变量在创建对象的时候才会初始化。

文章部分内用引自极客时间上杨晓峰的《java核心技术36讲》,侵权即删。小伙伴们有时间可以去听听《java核心技术36讲》这个专栏。

上一篇下一篇

猜你喜欢

热点阅读