Java基础知识4—面向对象

Java基础知识(4)-面向对象

​ 我们都听过,Java的面向对象支持的特性有封装、继承和多态,这一章节我们会将讲Java中对于这三种思想的实现,这里我们会说到Java中内置的两个指针:this和super。

封装

​ 封装指外界不能直接改变一个对象的属性,必须通过对象的方法更新对象的属性。根据这个原则,我们在设计POJO类时会将一个属性的访问域设置为private,将方法的访问域设置为public

​ 那么在这里不得不说一个内置的指针:this。之前我们说过,在使用new关键字时Jvm会在堆中开辟一个空间用来存储一个对象,那么this总是能精准的访问到这块区域。this一共有三种用法。

  • this.field:用来定位到实例本身的属性
  • this.method():用来定位到实例本身的方法
  • this():用来定位到实例本身的构造方法

继承

​ 继承指的是子类可以通过extends关键字继承一个原有的父类,那么这个子类可以很轻松的拥有父类中所有的属性和方法,但是子类不一定访问的到父类的所有属性和方法。

​ 那么在这里又得说一个内置的指针:super。在构造一个子类的实例的时候,Jvm一定会先构造一个父类的实例,然后子类的实例的指针会指向父类的实例,这个指针就是super。super也有三种用法。

  • super.field:用来访问父类的非私有属性
  • super.method():用来访问父类的非私有方法
  • super():用来访问父类的构造方法

多态

​ 相信很多人都听过这句话:多态分为编译时多态和运行时多态。引起编译时多态的原因是类与类之间的继承,类与接口之间的实现。引起运行时多态的原因是方法的重载和重写。那么我们一起来看这些知识点。

  • 编译时多态

    所谓编译时多态就是指把一个对象实例赋给它的接口变量或父类变量

    • 继承导致的多态

      class A {}
      
      public class B extends A {
          
          public static void main(String[] args) {
              A a = new B();
          }
          
      }
      
    • 实现导致的多态

      interface A {}
      
      public class B implements A {
          
          public static void main(String[] args) {
              A a = new B();
          }
          
      }
      
  • 运行时多态

    • 方法重载导致的多态:一个类的同名方法有不同个数或类型的参数。

      public class Test {
          
          public int add(int a, int b) {
              return a + b;
          }
          
          public int add(int a, int b, int c) {
              return a + b + c;
          }
          
          public int add(String a, String b) {
              return Integer.parseInt(a) + Integer.parseInt(b);
          }
          
      }
      
    • 方法重写导致的多态:一个子类的方法完全的覆盖了父类的方法叫做方法重写。

      class A {
          
          public int add(String a, String b) throws NumberFormatException {
              return Integer.parseInt(a) + Integer.parseInt(b);
          }
          
      }
      
      public class B {
          
          public int add(String a, String b) throws NumberFormatException {
              return Integer.parseInt(a) + Integer.parseInt(b);
          }
          
      }
      
  • 重载、重写对照表

    方法重载方法重写
    发生范围一个类中父子类之间
    访问修饰符可修改子类的访问权限可以大于父类
    返回值可修改子类的方法返回值可以小于父类
    方法名称不可修改不可修改
    方法列表一定修改不可修改
    异常列表可修改子类的异常列表可以小于父类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值