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 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 面向对象三大特征——封装、继承、多态 -> 正文阅读

[Java知识库]面向对象三大特征——封装、继承、多态

第八章

1.包

1.1作用

区分相同名字的类

更好地管理类

控制访问范围

//包的语法
package com.zcw

1.2本质

创建不同的文件夹来保存类文件

1.3命名

在这里插入图片描述
在这里插入图片描述
常用的包

在这里插入图片描述

1.4注意和细节

Arrays.sort(传入数组)  //对数组自动进行冒泡排序的方法

package的作用是声明当前类所在的包。需放在类的最上面,一个类最多只有一句package

import指令放在package的下面,在类定义前面,没有顺序要求

2.访问修饰符

2.1具体内容

JAVA提供四种访问控制修饰符,用于控制方法和属性的访问范围

? public protected default(默认的没有写) private

在这里插入图片描述

2.2注意事项

修饰符可以用来修饰类中的属性,成员方法及类

只有默认和public才能修饰类,并且遵循上述规则

成员方法的访问规则和属性完全一样

3.封装

1.1概述

把抽象出来的属性和方法封装在一起,数据被保护在内部,程序其他部分只有通过被授权的方法,才能对数据进行操作

1.2好处

隐藏实现细节

可以对数据进行验证,保证合理安全

1.3实现步骤

在这里插入图片描述

4.继承

4.1概述

当多个类存在相同的属性和方法时,可以从这些类中抽象出父类,在父类定义这些属性和方法,子类通过关键字 extends 来声明继承父类即可

class Son extends Father{
}

4.2好处

提高了代码的复用性

提高了代码的扩展性和可维护性

4.3细节

1.父类的私有(private)属性和方法不能在子类直接访问,要通过公共的方法去访问

private String name; //父类定义一个私有属性姓名
public String getName() {
 return name;   //定义一个访问 name 的公共方法
}
a.getName(); //子类要通过调用公共方法才能访问 name

2.当创建子类对象,不论子类用的哪个构造器,默认情况下先调用父类的无参构造器,完成父类的初始化

public Son() {
    super(); //默认存在super关键字调用父类的无参构造器
sout("这是子类的无参构造器")
}
public Father() {
sout("这是父类的无参构造器")
}
Son son = new Son(); //当创建一个子类对象,会默认调用父类和子类的构造器方法

3.如果父类没有无参构造器,要在子类构造器中用 ==super();==去指定使用父类的哪个带参构造器完成对父类的初始化工作,不然会报错

public Son(String name) {
super("zcw"); 
    //由于父类没有无参构造器,子类用super指定父类带参的构造器,即传入对应实参sout("这是子类的带参构造器")
}
public Father(String name) {sout("这是父类的带参构造器")
}
Son son = new Son(name); //当创建一个子类对象,会默认调用父类和子类的构造器方法
输出结果则是①②
  1. super只能在构造器使用,且必须放在构造器的第一行,不然会报错,先有爸,再有儿子
  2. super() 和 this() 都只能放在构造器的第一行,两个方法不能放在同一个构造器(好好理解)
  3. java所有类都是Object的子类
  4. 父类构造器的调用不限于直接父类,一直往上追溯到object类
  5. 子类最多只能继承一个父类,java是单继承机制
  6. 不能滥用继承,子类和父类必须满足 is-a 的关系

5.super关键字

5.1概述

super代表父类的引用,用于访问父类的属性、方法、构造器

super.属性名;
super.方法名();
super(参数列表);

1.super能访问父类的属性,但不能访问父类的私有属性

2.super能访问父类的方法,但不能访问父类的私有方法

3.访问父类的构造器,只能放在构造器的第一句,只能出现一次
在这里插入图片描述

? 找方法(super.cal())的顺序是直接查找父类,其他规则一样

5.2好处

1.调用父类构造器的好处,分工明确,父类属性由父类初始化,子类属性由子类初始化

2.当子类中有和父类成员重名时,为访问父类成员必须通过super。如果没有重名,则效果一样
在这里插入图片描述

3.super的访问不限于直接父类,如果爷爷类和本类有同名方法也可以使用super,使用super遵循就近原则

son{ String name; //在子类定义一个字段}
father{ String name; //在父类定义一个name字段}
granapa{ String name; //在爷爷类定义一个name}
super.name  //使用super调用 name字段 ,则调用的是 father类中的name

在这里插入图片描述

6.方法重写(override)

6.1概述

方法重写就是子类有一个方法和父类的某个方法名称、返回值类型、参数一样

calss Animal{ 
public void cry() {
sout("动物叫唤")
}
}
calss Dog extends Animal{ 
public void cry() {
sout("小狗汪汪叫")  //子类的方法重写了父类的
}
}

6.2细节

1.子类的方法要和父类的方法名称、返回值类型、参数完全一样

2.子类方法的返回值类型和父类方法返回值类型一样,或者是父类返回类型的子类,但是不能不一样

public Object getInfo() { } //父类方法
public String getInfo() { } //子类方法,String是Object的子类,构成方法重载

3.子类方法不能缩小父类方法的访问权限,但能扩大

pubilc void sayOk() {  }  //子类方法,两者构成方法重写,但不能写成 default
protect void sayOk() {   } //父类方法

方法重载和方法重写比较
在这里插入图片描述

g是Object的子类,构成方法重载


3.子类方法不能缩小父类方法的访问权限,但能扩大

```java
pubilc void sayOk() {  }  //子类方法,两者构成方法重写,但不能写成 default
protect void sayOk() {   } //父类方法

方法重载和方法重写比较
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-26 12:05:05  更:2021-10-26 12:05:47 
 
开发: 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:35:04-

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