面向对象的特点
封装性:封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体细节,这就是封装思想。
继承性:继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的情况进行拓展。
多态性:多态性指的是程序中允许重名现象,它指在一个类中定义的属性和方法被其他类继承后,可以具有不同的数据类型或表现不同的行为。
封装
- 类的封装:所谓类的封装就是在定义一个类时,将类的属性私有化,即使用private关键词修饰,私有属性只能在他所在的类中被访问。为了能让外界访问私有属性,需要定义一些public方法。
- 封装的基本原则:将实例变量标记为private,将getter与setter标记为public。
- 关于getter与setter:getter就是一个方法,用来返回实例变量的值;setter就是一个方法取用一个参数来设定实例变量的值。
继承
- 子类会继承父类所有public类型的实例变量和方法,但不会继承父类所有private类型的变量和方法。
- 继承下来的方法可以被覆盖掉,但实例变量不可以被覆盖掉。
- 当某个方法在子类中被覆盖过,调用这个方法时会调用到覆盖过的版本。
- 在java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类;多个类可以继承一个父类。
- 在java中多重继承是可以的。即一个类的父类可以继承另外的父类。
- 继承的意义: 避免了重复的代码;定义出共同的协议(就是父类对子类的规约)。
覆盖与重载
- 覆盖:由子类重新定义继承下来的方法,以改变或延伸此方法的行为。覆盖的规则:①参数必须一样,且返回类型必须要兼容。②不能降低方法的存储权限。
- 重载:两个方法的名称相同,但参数不同。
防止类被继承的方法
- 存取控制,类不能标记为私有,但可以不标记共有。非公有的类只能被同一个包的类继承。
- 使用final修饰符,表示在继承书的末端,不能被继承。
- 让类只拥有private构造程序。
多态
- 在同一个方法中,这种由于参数类型不同而导致执行效果不同的现象就是多态。在java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的,根据被引用子类的不同,得到不同的运行结果。参数和返回类型也可以多态,即父类类型对象当参数传入,传入的是他的子类也能运行。