面对对象三大特性:封装、继承、多态

封装

什么是封装:

将隐私的内容隐藏起来,不让外界直接使用。

封装的好处:

提高代码的安全性。

封装的原则:

将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。

封装的步骤:

  1. 将隐私的内容私有。
  2. 提供get/set方法给别人使用。

get:表示获取

set:表示修改

get/set方法的方法名可以随便写,现在只是为了方便,见名知意。

如何将成员变量私有:

  1. 使用private关键字。
  2. private表示私有,只有本类可以使用。
  3. private可以修饰成员变量和成员方法。

private的使用格式

private 数据类型 变量名;

继承(extends)

继承的定义:

在现有类的基础上定义一个新的类。现有类称为父类,新的类称为子类,子类会自动拥有父类的内容。

继承的好处:

  1. 子类会自动拥有父类的内容,提高代码的复用性。
  2. 类与类之间产生了关系,是多态的前提。

继承的格式:

class 父类 {
...    
}
class 子类 extends 父类 {
...    
}

写代码时,继承的注意事项:

  1. 分析的时候将子类的相同内容提取到父类中。(子类放自己特有的功能)
  2. 写代码的时候先写父类,再写子类。

子类不能使用的的内容:

  1. ​​​​​​​构造方法子类不会继承。
  2. 父类的私有内容子类不能使用。(私有的只有本类可以使用)
  • ​​​​​​​父类的私有成员变量,要提供get/set方法给子类使用。
  • 父类的私有成员方法,子类无论如何都不能使用。

当子类使用变量时,若父类也有此变量。

就近原则:自己有用自己的,自己没有用父类的。

  • 局部变量 > 本类成员变量  > 父类成员变量

继承的特点:

  1. java中,类只能单继承,一个类只有一个父类。
  2. 一个类可以有多个子类。
  3. 支持多层继承。
  • ​​​​​​​子类和父类是相对的概念。
  • 一个类没有继承父类,其实是继承object类。

继承后标准构造方法的写法:

  1. 子类的无参构造调用父类的无参构造。
  2. 子类的有参构造调用父类的有参构造,自己的成员变量自己赋值。

有了继承关系后:

子类所有构造方法都会先调用父类的无参构造。

为什么要走父类的构造方法:

因为父类中可能有成员变量需要通过构造方法来赋值。

关于继承构造方法,this,super的注意事项:

  • 在子类构造方法的第一行,默认有一个super()。
  • super()只能放在构造方法的第一行。(不能放在别的方法,只能在构造方法)
  • this()也只能放在构造方法的第一行。 (但是可以放在别的方法,且在非构造方法中,能处在任意位置)

在构造方法中,super()和this()都只能放在第一行,那构造方法第一行到底放什么:

  1. 默认是super()。
  2. 子类的构造方法能够直接或间接调用到父类的构造方法即可。

何谓间接调用到父类的构造方法:

在调用this()时,第一行是this(参数),则在this(参数)方法中,第一行是super(),间接调用父类的构造方法。

方法重写

为什么是方法重写:

子类中的方法和父类的方法重合。

回顾方法重载的定义:

同一个类中,方法名相同,参数列表不同。

什么时候使用方法重写:

子类和父类有相同的功能,但是子类的功能比父类的功能更加强大,就使用方法重写。

方法重写的注意事项:

  1. 是子类和父类的事情。
  2. 方法名要相同。
  3. 参数列表要相同。
  4. 返回值类型要相同。
  5. 子类方法的权限要大于等于父类方法的权限。

多态

什么是多态:

父类引用变量指向子类对象。

多态的前提:

  1. 要有继承关系或者实现关系。
  2. 要有方法的重写。(意义体现:不重写,无意义)(不重写,能编译通过,但是直接new父类就行了,没必要用多态)
  3. 父类引用指向子类对象(格式体现)

多态格式:

父类类型 变量名 = new 子类对象;
变量名.方法名();

  • 父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

多态的调用:

多态走的是子类的重写方法。

多态的弊端:

调用方法时看左边,左边的类型有什么方法就能调用什么方法。没有的则不能调用。

多态的好处:

参数写父类,可以传入任意子类(参数学接口,可以传入任意实现类),在参数传递的时候形成多态,提高代码的扩展性。

引用类型的转换:

  1. 向上转型
  2. 向下转型

向上转型:

  1. 将子类转成父类。
  2. 将范围小的赋值给范围大的。
  3. 多态就是向上转型。
  • ​​​​​​​父类  变量名  =  new  子类();

  向下转型:

  1. 将父类转成子类。
  2. 将范围大的赋值给范围小的。
  • ​​​​​​​格式:子类   变量名  =  (子类)   父类变量;
  • 好处:可以调用子类中的特有功能。
  • 注意事项: 变量new的时候是什么类型,就只能转成什么类型。

instanceof

  • 作用:判断一个变量是否是某种类型。
  • 格式:boolean  r  =  变量   instanceof   类名;
  • 使用场景:在向下转型前,做类型判断。
  • 注意事项:无关类不能用instanceof判断。

猜你喜欢

转载自blog.csdn.net/weixin_41630924/article/details/81320190
今日推荐