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

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

1.封装

封装的好处:

  • 封装可以隐藏实现的细节,封装内部可以很复杂,对外提供简单的操作入口,使得使用者可以不关心内部实现原理,可以实现简单运用
  • 封装之后才会形成真正的独立体
  • 封装之后,以后的程序可以重复使用,可在许多场合下使用。
  • 封装之后,字段和实现细节被隐藏,不允许外部直接访问,事物的安全性得到提高。

属性私有化(private),通过get和set方法(非静态方法)得到和修改属性。


2.继承

class A {}
class B extends A{}

B类继承A类
A类称为超类(superclass)、父类,基类。
B类称为子类(subclass)、派生类、扩展类

作用:

  • 基本作用:子类继承父类,代码可以复用。
  • 主要作用:有了继承关系,才有方法的覆盖和多态机制

要点:

  • Java只允许单继承,不允许多继承,但是可以出现间接继承的效果。
  • 子类在继承的时候,除了构造方法无法继承外,其余都可以继承,但是私有属性无法在子类中直接访问。
  • 当类没有显示的继承某个类时,默认继承object类。
  • 在实际开发过程中,能用“is a”来描述的都是可以继承的。
  • 继承的缺点:继承让代码的耦合度变高,父类在修改的时候,子类也会受到牵连。

方法重载(Overload):
一个类当中,功能相同,建议名字也相同,这样代码美观且易编程

  • 在同一个类当中
  • 方法名相同
  • 参数列表不同

方法重写(Override、Overwrite):
又叫方法的覆盖

  • 子类从父类中继承过来的方法,这个方法无法满足子类的需求时,需要重写方法。
  • 当子类对象对继承过来的方法进行方法覆盖之后,子类对象在调用该方法的时候,一定会执行覆盖之后的方法。

重写的条件:

  • 两个类必须有继承关系。
  • 重写之后的方法必须和原来方法具有相同的返回值类型,相同的方法名,相同的参数列表。
  • 访问权限不能更低,可以更高。
  • 重写之后的方法不能比原先的方法抛出更多的异常。可以更少

注:

  • 方法覆盖只是针对方法,和属性无关
  • 构造方法不能被继承和覆盖。
  • 方法覆盖只是针对实例方法,和静态方法无关。
  • 私有方法无法重写覆盖

多态

举例:

class Animal{
 public void move(){
 System.out.println("动物移动")
  }
 }
 
 class Cat extends Animal{
 public void move(){
 System.out.println("猫在移动")
 }
 }
 public static void main(String[] args){
 Animal c1 = new Cat();
 c1.move;
 }

输出结果为“猫在移动”
分析:
Java程序分为编译阶段和运行阶段

1.编译阶段:

  • 对编译器来说,编译器只知道c1的类型是Animal,所以编译器在检查语法的时候,会去Animal.class字节码文件中找到move()方法,找到了就绑定上move()方法,编译通过,静态绑定成功(编译阶段属于静态绑定)。

2.运行阶段:

  • 运行阶段的时候,实际上在堆内存中创建的java对象是Cat对象,所以调用move方法的时候,运行阶段会动态执行Cat的move方法,这个过程属于运行阶段绑定(运行阶段绑定属于动态绑定)
    注意:
    编译阶段是一种形态
    运行阶段是一种形态

多态指的是父类型引用指向子类型对象。
包括编译阶段和运行阶段
编译阶段:绑定父类的方法
运行阶段:动态绑定子类对象的方法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值