Java的继承概念

news/2024/10/23 23:08:57

在Java中,继承是一种重要的面向对象编程概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。使用继承可以提高代码的复用性和可维护性。

  1. 继承的基本语法

    • 使用 extends 关键字来声明一个类继承自另一个类。
    class Parent {// 父类的属性和方法
    }class Child extends Parent {// 子类的属性和方法
    }
    
  2. 构造方法的调用

  • 子类的构造方法会隐式调用父类的无参构造方法。如果父类没有无参构造方法,必须显式调用父类的带参构造方法。
class Parent {public Parent(String name) {// 父类的带参构造方法}
}class Child extends Parent {public Child() {super("defaultName"); // 显式调用父类的带参构造方法}
}
  1. 方法重写(Override)
  • 子类可以重写父类的方法,但必须保持方法签名一致。
  • 使用 @Override 注解来确保方法确实被重写了。
class Parent {public void display() {System.out.println("Parent display");}
}class Child extends Parent {@Overridepublic void display() {System.out.println("Child display");}
}
  1. 方法重载(Overload)
  • 方法重载是指在一个类中定义多个同名但参数列表不同的方法。
  • 方法重载与继承无关,但要注意不要在子类中无意地重载了父类的方法。
class Parent {public void display(int a) {System.out.println("Parent display with int");}
}class Child extends Parent {public void display(String s) {System.out.println("Child display with String");}
}
  1. 访问控制
  • 继承时,子类只能访问父类的 publicprotected 成员,不能访问 private 成员。
  • 可以通过 protected 关键字来控制成员的访问范围。
class Parent {protected int age;private String name;public String getName() {return name;}
}class Child extends Parent {public void printAge() {System.out.println(age); // 可以访问 protected 成员}
}
  1. final 关键字
  • 使用 final 关键字可以防止类被继承或方法被重写。
final class FinalClass {// 该类不能被继承
}class Parent {public final void display() {// 该方法不能被重写}
}
  1. 抽象类和接口

    • 抽象类可以包含抽象方法和具体方法,子类必须实现抽象方法。
    • 接口中的方法默认是 public abstract 的,实现接口的类必须实现所有方法。
    abstract class AbstractClass {public abstract void abstractMethod();public void concreteMethod() {// 具体方法}
    }interface MyInterface {void method1();void method2();
    }class MyClass extends AbstractClass implements MyInterface {@Overridepublic void abstractMethod() {// 实现抽象方法}@Overridepublic void method1() {// 实现接口方法}@Overridepublic void method2() {// 实现接口方法}
    }
    
  2. 多态

  • 多态是指同一个方法调用在不同的对象上有不同的行为。
  • 通过父类引用调用子类对象的方法,可以实现多态。
class Parent {public void display() {System.out.println("Parent display");}
}class Child extends Parent {@Overridepublic void display() {System.out.println("Child display");}
}public class Main {public static void main(String[] args) {Parent parent = new Child(); // 父类引用指向子类对象parent.display(); // 输出 "Child display"}
}
  1. 继承的层次
    • Java 中只支持单继承,即一个类只能继承一个父类,但可以实现多个接口。
    • 过多的继承层次可能导致代码复杂性和维护难度增加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/75261.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2024秋软工实践 福气满满团队展示与选题报告

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13281作业的目标 运用LMM大语言模型接口创建一款基于场景的AI对话软件,为传统软件赋予全新功能团队名称 福气满满团队成员学号-名字 052203132童…

《操作系统真象还原》内核内存分布与加载

操作系统内核加载流程图 %%{init:{theme:default, themeVariables:{fontSize:1px}}}%% graph TBA(mbr.s 0xc700开始) --> rd_disk_m_16(mbr.s <br /> rd_disk_m_16) A --> C(loader.s <br> jmp LOADER_BASE_ADDR + 0x300) --> loader_start(loader.s…

20222318 2024-2025-1 《网络与系统攻防技术》实验二实验报告

1.实验内容 (一)本周课程内容 (1)深入理解后门概念及其实际案例,明晰后门对系统安全构成的潜在威胁。 (2)普及后门技术知识,涵盖各类进程隐藏技巧,并熟悉netcat、meterpreter、veil等常见工具的应用。 (3)进一步学习了shellcode注入的逻辑原理及其在不同场景下的应用…

IDEA 类和方法的注释

IDEA 类和方法的注释 一、设置方法的注释 (1) 打开file->setting->Editor->LiveTemplates点击右上面那个+号,选择Template Group双击,然后弹出一个窗口,添加命名为KeyBoard点击OK完成,如下图1所示:图1 (2) file->setting->Editor->LiveTemplates这个…

实验2 类和对象

任务1 t.h1 #pragma once2 3 #include <string>4 5 // 类T: 声明6 class T {7 // 对象属性、方法8 public:9 T(int x = 0, int y = 0); // 普通构造函数 10 T(const T &t); // 复制构造函数 11 T(T &&t); // 移动构造函数 12 ~T();…

提权 | Windows系统

提权篇:Windows系统常见提权姿势。目录cmd提权meterpreter提权getsystemsteal_tokenmigrate令牌窃取(MS16-075)烂土豆提权步骤烂土豆提权原理sc命令提权抓本地密码提权其他工具pr工具内核提权WindowsVulScan cmd提权 前言:我们getshell一个用windows部署的网站后,通过蚁剑或…

08.Sleuth(Micrometer)+ZipKin分布式链路追逐

1.Sleuth进入维护模式替代方案 -> Micrometer Tracing 2.分布式链路追踪概述 2.1 出现背景 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协调产生最后的结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环…

sream

构建 arrays.stream(数组) 根据数组构建 collection.stream 根据集合构建 stream.of 根据对象创建 生成 Instream.range(a,b) 合并 stream.concat(流1,流2)