栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象三大特征——封装、继承、多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象三大特征——封装、继承、多态

第八章 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() {   } //父类方法

方法重载和方法重写比较

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号