Java最重要的特点就是面向对象进行编程,所以OOP是其中非常重要的一个概念,但是第一次接触的话,会感到比较有难度,有的地方会感觉有一点难以入手,所以这次专门记录下来这样有意思的一个章节内容。
目录
实例变量,实例方法,类变量,类方法
实例变量,又或者叫做成员变量,其实就是每一个实例当中所包含的变量,属性。每一个实例的实例变量有可能不同。
实例方法,又或者叫做成员方法,其实就是每一个实例当中所使用的方法。必须要做到先有了实例,然后才可以调用这个方法。
类变量,又叫做静态变量,是加了static的变量,属性。这样的变量一般是这种类所具有的公共的属性,比如用来统计实例化了多少个对象,这样大家必须公用一块相同的空间来计数。访问类变量不需要实例化一个对象再访问,之间用类操作就可以。
类方法,同样和类变量相同,也是加了static的一个方法,直接用类去访问就可以,不需要实例化对象。
接口和重写的总结
接口,也就是Interface,是用来定义ADT,确定ADT规约。具有以下的性质:
接口之间可以继承与扩展
一个类可以实现多个接口(从而具备了多个接口中的方法)
一个接口可以有多种实现类
在平时使用的时候,也可以不需要接口直接使用类作为 ADT ,既有 ADT 定义也有 ADT 实现,但是实际中更倾向于使用接口来定义变量,这样可以保障我们的代码以后可以根据不同的需求来实现不同的接口,更方便。
重写:
重写的函数需要完全同样的signature。
而重载要求的有以下几种:
MUST change the argument list. 不同的参数列表
CAN change the return type. 相同/不同的返回值类型
CAN change the access modifier. 相同/不同的public/private/protected
CAN declare new or broader checked exceptions. 异常
A method can be overloaded in the same class or in a subclass. 可以在同一个类内重载,也可在子类中重载
尽量做到不改变原来函数的意图。到时候实际处理需要调用哪一个就看对象实例化的是哪一个就可以了。
多态以及泛型
多态分为特殊多态,参数化多态,子类型多态,包含多态。
多态的接口实例调用:
泛型:
使用的情况举例:Instead of writing separate specifications and implementations for Set<String> , Set<Integer> , and so on, we design and implement one Set<E> .
相关的还有,通配符,只在使用泛型的时候出现,不能在定义中出现,比如:
只存在于compile-time,运行时泛型消失了。