首页 > 编程语言 >Java的继承概念

Java的继承概念

时间:2024-10-23 22:58:36浏览次数:7  
标签:Java Parent display 继承 void class 概念 父类 public

在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 {
    @Override
    public 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 {
        @Override
        public void abstractMethod() {
            // 实现抽象方法
        }
    
        @Override
        public void method1() {
            // 实现接口方法
        }
    
        @Override
        public void method2() {
            // 实现接口方法
        }
    }
    
  2. 多态

  • 多态是指同一个方法调用在不同的对象上有不同的行为。
  • 通过父类引用调用子类对象的方法,可以实现多态。
class Parent {
    public void display() {
        System.out.println("Parent display");
    }
}

class Child extends Parent {
    @Override
    public 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 中只支持单继承,即一个类只能继承一个父类,但可以实现多个接口。
    • 过多的继承层次可能导致代码复杂性和维护难度增加。

标签:Java,Parent,display,继承,void,class,概念,父类,public
From: https://www.cnblogs.com/zyh-828/p/18498554

相关文章

  • 【JAVA毕设】基于JAVA的酒店管理系统
    一、项目介绍 本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router实现动态路由,Ajax实现前后端通信,Element-plus组件库使页面快速成型。后端部分:采用SpringBoot作为开发框架,同时集成MyBatis、Redis、阿里云oss对象存储等相关技术。酒店管理系统,可前......
  • Java强制类型转换:深入理解与实践
    在Java编程中,类型转换是一个常见的操作,它允许我们将一个数据类型的值转换为另一个数据类型的值。Java提供了两种类型转换:自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。在这篇文章中,我们将重点探讨强制类型转换,包括它的使用场景、语法、以及在实际编程中的应用。什么......
  • Java Springboot 接收前端上传图片,并返回路径让前端显示图片
    一、接收前端图片并保存并为前端返回一个图片路径. @RestController@RequestMapping("/upload")publicclassUploadImgController{@Autowired(required=false)privateResourceLoaderresourceLoader;@Value(value="/Users/user/Java/Upload/Serve......
  • uniapp图片上传功能前后端代码(java)
    注意点:1.接口名2.文件大小和类型限制3.后端服务器要启动4.如果前后端分离部署,确保后端支持跨域请求(CORS)前端代码:<template> <viewclass="main"> <image:src="imagesrc"@click="onclick"lazy-load=true style="top:470rpx;height:700rpx;width:700......
  • 行为设计模式 -观察者模式- JAVA
    责任链设计模式一.简介二.案例2.1抽象处理者(Handler)角色2.2具体处理者(ConcreteHandler)角色2.3测试三.结论3.1优缺点3.2示例3.3要点前言这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。作者:神的孩子都在歌唱一.简介......
  • 继承_练习_定义经理类
    写代码前,先创建一个名为inheritance(继承)的包,以下所有代码都在该包中创建。员工类此类可直接复制。packageinheritance;importjava.time.LocalDate;publicclassEmployee{privatefinalStringname;//姓名privatedoublesalary;//薪水privatefina......
  • Java 解析 XML 转换为 Json
    我们使用Java开发项目时偶尔会需要使用到Xml文件的解析,一般情况下都会使用DOM4j、SAX、JDOM等方案,但这些方案比较代码编写较为繁琐。我们经常使用的Json进行数据传输或存储,如果能够将Xml快速转换为Json,将会大大减轻我们后续开发和维护的工作量。本篇博客简单介绍使用......
  • springboot+vue展位设计模型库网站的java开发与设计
    目录系统实现截图详细技术介绍本课题软硬件环境核心代码部分展示其他springboot项目推荐详细视频演示源码获取系统实现截图详细技术介绍系统采用了基于SpringBoot、Vue和MySQL的三层结构体系。前端部分通过Vue框架构建用户界面,实现页面展示和交互功能,后端则利......
  • JAVA开源项目 基于Vue和SpringBoot购物商城网站
    本文项目编号T032,文末自助获取源码\color{red}{T032,文末自助获取源码}......
  • JAVA开源项目 基于Vue和SpringBoot高校心理教育辅导系统
    本文项目编号T031,文末自助获取源码\color{red}{T031,文末自助获取源码}......