IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 为什么要封装,封装的优点是什么,什么是继承,为什么要有继承,多态是什么? -> 正文阅读

[移动开发]为什么要封装,封装的优点是什么,什么是继承,为什么要有继承,多态是什么?

# 封装,继承,多态

1. 封装

封装的优点:

  1. 提高代码的复用性,常用的代码或者功能封装到方法中,可以在其他地方反复调用
  2. 提高代码的安全性,重要的信息私有化,不对外暴露
  3. 封装代码的实现细节,便于修改内部代码,提高可维护性
  4. 简化外部的调用,便于调用者使用

private修饰符的特点:

  • private是四种权限修饰符中的一种,权限最小
  • private可以修饰成员变量和成员方法
  • private修饰属性和方法,就只能在当前类中才能访问,在当前类以外的其他地方不能访问
  • private修饰的属性,称之为私有属性,private修饰的方法,称之为类中的私有方法

2. 重载

方法重载:类中有多个方法,具有相同的方法名,但是方法的参数不相同。

方法重载,要求:

  1. 方法名必须相同
  2. 方法的参数列表必须不同
    • 参数的类型不同
    • 参数的数量不同
    • 参数的顺序不同
  3. 方法的修饰符,返回类型,抛出异常没有限制

3. 构造器

类中的构造器也称之为构造方法,构造函数,是在创建对象的时候必须调用的

构造器必须有一下要求:

  • 必须和类的名字保持一致
  • 必须没有返回值,不可以写void

构造器的作用:

  • 使用new关键字来创建对象的时候,后面跟的必须是类中的构造器
  • 构造器中的代码,在对象创建的时候会被调用,从而可以完成对象的初始化工作

默认构造器:

如果没有定义构造器,在编译之后,会自动的生成一个无参构造器,并且在构造器中不执行任何代码。

当在类中定义了一个构造器,系统就不会再生成无参构造器,需要自己定义了。

构造器之间的调用

使用this关键字,可以在构造器中,调用另一个构造器

4. 继承

类与类之间的关系有很多种,计征就是其中一种关系,除此之外,有依赖,组合,集合等

表现:父子类,is-a;父类更通用,子类更具体

继承的好处,优点:

  • 提高代码的复用性
  • 类与类之间产生了关系(is-a),这是使用多态特性的前提。

继承的关键字:子类继承父类,使用关键字extends

子类继承父类,继承了父类的属性和方法,并可以在子类中访问这些属性和方法。(父类中的私有属性和方法,子类不能访问。父类中的构造器,子类也是不能继承的)

java中,类与类之间的继承是单继承的;

Java中,如果,没有给类指定父类的话,默认为继承父类Object

Object类中没有属性。

Java中,每一个类都是之间或者间接继承了Object,可以说Object是所有类的父类。

子类继承父类,创建子类对象的时候,会默认调用父类的构造器;

子类继承父类,会继承父类的属性和方法,那么就需要先调用父类的构造器对父类的属性进行初始化,初始化完成后再给子类使用。

构造器的作用之一就是进行初始化。

5. supper关键字

在类中,除了可以使用this关键字。还可以使用supper关键字。

在类中,使用supper关键字一般做一下事情:

  • 访问父类的属性
  • 调用父类的关键字
  • 调用父类的构造器

访问父类中的属性:

调用父类中的方法:

调用父类中的构造器:

子类构造器中可以隐式调用父类无参构造器。

子类构造器可以显式调用父类构造器:无参,有参都可以。使用super关键字。

其中,在构造器中可以使用this关键字调用类中的其他构造器,也可以使用super调用父类中的构造器,但是this和super这俩种调用构造器的代码,不能同时出现,否则会报错。因为两都必须出现在第一行。

6. 方法重写

如果子类和父类中出现了相同的方法,这种情况就叫做方法的重写(Override)

方法重载是发生在同一个类中,方法重写发生在子父类之间。

父类中的一个方法和子类中的一个方法,满足以下要求,就是方法的重写:

  • 方法名必须相同

  • 参数列表相同

  • 访问的控制修饰符可以扩大,但是不能缩小

    ? public >protected>default>private

  • 方法抛出异常类型的范围可以被缩小,但是不能被扩大

  • 返回类型相同,也可以不同

注意,大多数情况下,子类中重写的方法 会和 父类中的方法 完全保持一致,只有方法的实现不 同。(也就是大括号中代码不一样)

父类中不能被重写的方法:

  • 父类中的静态方法不能被子类重写
  • 父类中私有方法不能被子类重写

7. 多态

不同的对象,进行同一个行为,但是所表现出来的不同形态。

多态的前提:

  • 子类继承父类
  • 子类重写父类中的方法
  • 父类的引用指向子类的对象

类实现接口,这是一种特殊形式的继承,多态也可以体现在类和接口的关系中

使用多态的好处:

8. instanceof关键字

在使用多态的情况下,instanceof关键字就显得特别重要,因为它能告诉我们,当前父类的引用, 到底是执行的哪一个子类对象

public void test(Person p){
if(p instanceof Student){
//说明p指向的是Student类型对象
}
else if(p instanceof Teacher){
//说明p指向的是Teacher类型对象
}
}

9. 引用类型的转换

多态中的类型转换分为向上转型与向下转型两种:

  • 向上转型(子类转父类)类型自动转换

    persion p=new Student();
    
  • 向下转型(父类转子类)

    父类转子类属于向下转化的过程。(类型强制转换)

    Person p=new Student();
    Student stu=(Student) p;//向下转换
    

    使用多态的情况下,父类引用是无法调用子类中独有的方法的

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-19 12:00:17  更:2021-10-19 12:00:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:48:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码