Java继承的问题引导和测试代码

作者:!flameking 时间:2023-03-13 18:50:34 

1.1、定义

从现有类派生的类被称作子类,也叫派生类,扩展类,或孩子类。现有类被称作超类,也叫基类,或父类。

1.2、创建子类


public class Person {}
public class Teacher extends Person{}

1.3、继承的基本规则

1. 子类可以继承除父类构造函数以外的一切成员

为什么子类没有继承父类的构造函数 ?
父类构造函数无法预知子类新增的属性和方法,所以不能被继承

2. 虽然子类继承了父类的私有成员,但子类并不能直接访问,如果想要访问私有成员必须借助父类的公共接口。


public class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
   this.name = name;
}
}
public class Teacher extends Person{
// 方法覆盖
public String getName() {
// super 调用父类的功能接口
   return super.getName() + "校长";
}
}
public class Test {
public static void main(String... args) {
       Teacher flameking = new Teacher();
       System.out.println( flameking.getName() );
   }
}

测试结果:

Java继承的问题引导和测试代码

小结:

super.getName() + "校长"; 这样便能访问父类私有的 name 属性 。所以在子类中可以通过super.父类公共接口 的形式,访问父类的私有成员。

3. 只支持单一继承,不支持多重继承,但支持多层继承

解释:除了Object 没有父类,每个类有且仅有一个直接父类,如果没有明确指出父类,Object 被认为是这个类的父类。

也许有同学就会问了,既然 Object 是所有类的父类,那么为什么还可以继承其他类呢?
正如解释里所说:“没有明确指出父类,Object 被认为是这个类的父类。”

没有明确指出父类


public class Person {}
public class Teacher {}

继承关系是这样的:

Java继承的问题引导和测试代码

继承后


public class Teacher extends Person{}

继承关系如下:

Java继承的问题引导和测试代码

也许有同学又会问:既然不能多重继承了,那我要同时继承多个类的功能该怎么办呢?解决办法如下:


// 第一种方式(✖️)
public class Person {}
public class Employee {}
public class Teacher extends Person,Employee {}

// 第二种方式(✔️)
public class Person {}
public class Employee extends Person {}
public class Teacher extends Employee {}

小结:

如上,既然不能多重继承,那么利用多层继承的方式便能同时继承多个类的功能。

1.4、阻止继承

当我们在创建一个新类时,现有某个类包含我们想要的代码,那么让这个新类继承它,这样我们就不用重新编写代码,就可以复用已存在的属性和方法。可是有某个同学他偏偏不想让别人利用他的代码…

那他怎么做才能让自己的代码不被别人继承呢?

1.4.1、final修饰符

1. final 修饰的类不能被继承

使用方法:


public final class Person {}

效果显示:

Java继承的问题引导和测试代码

2. final 修饰的方法不能被覆盖

3. final 修饰的变量(成员变量和局部变量)必须显式初始化,且只能初始化一次。

修改 final 局部变量 的取值


public class Test {
public static void main(String... args) {
   final int temp;
   temp = 1;
   temp = 2;
   }
}

报错提示:

Java继承的问题引导和测试代码

final成员变量未显式初始化


public class Person {
private final String name;
}

报错提示:

Java继承的问题引导和测试代码

4. 常量定义的标准格式

public static final 数据类型 常量名=赋值

常量名:大写字符,如果有多个,用下划线连接

private 修饰的类成员只能在类的内部访问,这是由面向对象的封装性决定的

来源:https://blog.csdn.net/qq_48299903/article/details/119853131

标签:Java,继承,代码测试
0
投稿

猜你喜欢

  • Java和C++通过new创建的对象有何区别?

    2022-02-07 10:06:10
  • android短信管理器SmsManager实例详解

    2021-09-03 18:17:18
  • 使用异步方式调用同步方法(实例详解)

    2023-03-29 16:38:21
  • Mybatis日志参数快速替换占位符工具的详细步骤

    2023-09-30 21:29:36
  • SSM如何实现在Controller中添加事务管理

    2023-11-29 07:23:18
  • Android仿QQ在状态栏显示登录状态效果

    2021-10-09 04:12:06
  • Android快速实现发送邮件实例

    2022-06-10 03:39:48
  • Spring中Bean的三种实例化方式详解

    2023-07-28 12:37:07
  • java Iterator.remove()实例方法分析

    2022-05-01 15:56:01
  • c#连接excel示例分享

    2023-08-10 07:42:04
  • Kotlin标准函数与静态方法应用详解

    2022-01-21 10:45:33
  • Android自定义可控制速度的跑马灯

    2023-08-11 14:05:00
  • 一篇文章带你复习java知识点

    2023-01-15 09:39:38
  • C#中将DataTable转化成List<T>的方法解析

    2023-02-06 23:20:39
  • Tornadofx学习笔记之IconTextFx开源库整合5000+个字体图标

    2023-06-07 12:18:04
  • Android 使用gradle打包Assets目录的案例

    2023-08-05 22:29:45
  • Android ActivityManager使用案例详解

    2021-11-09 14:35:54
  • 详解Java如何在CompletableFuture中实现日志记录

    2022-03-21 17:11:01
  • Springboot引入多个yml方法(多种方案)

    2023-07-21 21:10:48
  • Android仿美团网、大众点评购买框悬浮效果修改版

    2023-10-05 13:12:17
  • asp之家 软件编程 m.aspxhome.com