ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JavaSE基础篇(九)——面向对象(中)

2021-03-21 21:29:29  阅读:233  来源: 互联网

标签:重写 子类 基础 多态 方法 面向对象 JavaSE 父类 stuId


面向对象的三大特性

1. 封装

  • 封装可以隐藏对象的属性和其方法的实现细节,仅对外公开接口,控制其访问级别。

  • 封装的目的:增强安全性和简化编程。

  • 封装性在代码中的体现就是公有方法调用私有属性成员

    //类
    public class Student {
        //属性
        private int stuId;      //学号
    	//获得学号
        public int getStuId() {
            return stuId;
        }
    	//给学号赋值
        public void setStuId(int stuId) {
            this.stuId = stuId;
        }
        //动作(方法)
        public static void study(){ //学习
            System.out.println("I am studying !");
        }
    }
    
    • 由于 stuIdStudent 类的私有属性,其他类不能使用 对象.属性名 的方法调用 stuId ,但可以使用对象名.getStuId() 获得 stuId

    • 对于 setStuId 方法,可以在其中添加属性安全性检查,增强程序的安全性,比如下面的代码:

      public void setStuId(int stuId) {
          if(stuId < 0){
              return error;
          }
          this.stuId = stuId;
      }
      
  • 封装的优点

    • 提高系统安全性,保护数据。
    • 隐藏代码实现细节。
    • 统一接口。
    • 增加系统的可维护性。

2. 继承

  • 继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。

  • 继承的本质就是 “扩展”,使用 extends 关键字来实现。

  • 继承是两个类之间的一种关系,一个为父类(基类),一个为子类(派生类)。

  • 区别于实例化对象

    • 学生分为小学生和中学生,其中学生是父类,小学生和初中生是子类。
    • 张三是小学生,李四是中学生,张三和李四分别为小学生和中学生的对象。
  • 继承的特点:

    • 子类可以继承父类的所有非私有的属性和方法。

    • Java 中的所有类都直接或者间接继承 Object 类,通俗点讲就是,Object 类是 Java 中所有类的祖宗。

    • Java 中只有单继承,没有多继承(一个子类只能有一个直接父类,一个父类可以有多个子类)。

    • 创建子类对象会执行父类和子类的构造器,且父类构造器必须先于子类构造器执行。

    • 子类继承父类的属性或者方法,访问权限只能不变或者扩大,不能缩小。如:父类的 protected 属性,子类继承后只能是 protectedpublic ,不能是 defaultprivate

      public > protected > default > private

  • super 关键字

    • super 指代当前类的父类的对象的引用,可使用 super.方法名() 调用父类的方法(非私有),使用 super.属性名 调用父类的属性(非私有)。
  • super 调用父类的构造方法,必须在构造方法的第一个。

  • superthis 对比

    参数thissuper
    作用域子类、父类的方法都可以只能出现在子类的方法中
    指代对象当前类的对象当前类的父类的对象
    前提有无继承皆可使用只能在继承条件下使用
    构造方法this() 当前类的构造super() 当前类的父类的构造
    兼容性this 和 super 不能同时调用构造方法this 和 super 不能同时调用构造方法
  • 方法重写

    • 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写![1]

    • 重写与重载的区别

      参数重写重载
      作用域只能在子类重写父类(前提是继承关系)同一类或者子类
      参数列表相同不同
      访问权限不能比父类低可以随意更改
      构造方法不能被重写可以重载
      限制不能重写 private、final、static 修饰的方法无限制
      抛出异常可以被缩小,不能被扩大可以声明新的或更广的检查异常

3. 多态

  • 多态为不同数据类型的实体提供统一的接口,使同一个事件发生在不同的对象上会产生不同的结果

  • 多态指方法的多态,属性没有多态。

  • 多态存在的三个必要条件:

    • 继承
    • 重写
    • 父类引用指向子类对象:Parent p = new Child();
  • 多态方法调用:

    • 首先检查父类中是否有该方法,如果没有,则编译错误。
    • 如果有,而且子类并未重写该方法,调用父类方法。
    • 如果有,而且子类重写了该方法,再去调用子类的同名方法。
  • 多态的优点

    • 消除类型之间的耦合关系
    • 可替换性
    • 可扩充性
    • 接口性
    • 灵活性
    • 简化性
  • 详情及代码演示[2]

4. 参考资料

[1] 佚名. Java 重写(Override)与重载(Overload)[EO/BL]. https://www.runoob.com/java/java-override-overload.html, ???-??-??/2021-03-21.
[2] 佚名. Java 多态[EB/OL]. https://www.runoob.com/java/java-polymorphism.html, ???-??-??/2021-03-21.

标签:重写,子类,基础,多态,方法,面向对象,JavaSE,父类,stuId
来源: https://blog.csdn.net/qq_42651415/article/details/115056279

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有