爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      认识Java语言(三)

      首页 知识中心 软件开发 文章详情页

      认识Java语言(三)

      2024-11-04 09:35:26 阅读次数:28

      子类,父类

      第五章 继承与多态

      5.1 继承

              继承是面向对象编程中的一个基本特性,它允许创建基于现有类的新类,从而促进代码的复用和扩展。

      5.1.1 继承概述

              在Java中,当一个类继承另一个类时,它将获取超类(父类)的所有属性和方法。这样的类称为子

      class Animal {
          void eat() {
              System.out.println("Animal eats");
          }
      }
      
      class Dog extends Animal {
          void bark() {
              System.out.println("Dog barks");
          }
      }
      

      5.1.2 子类的继承规则

              子类继承超类时,必须遵守Java语言规定的一些规则:

      • 子类只能继承超类的非private成员(属性和方法)。
      • 子类不能继承超类的构造方法,但可以通过super()调用。

      5.1.3 子类对象的创建和super

              创建子类的对象时,会先调用父类的构造方法。super关键字可以用来调用父类构造方法,以及父类中被子类覆盖的方法。

      class Animal {
          Animal() {
              System.out.println("Animal is created");
          }
      }
      
      class Dog extends Animal {
          Dog() {
              super(); // Call the superclass constructor
              System.out.println("Dog is created");
          }
      }
      

      5.1.4 继承关系中的内存分配

              在继承关系中,当子类对象被创建时,内存中会为包含的父类成员分配空间,以便使用父类的属性和方法。

      5.1.5 实例变量的隐藏

              当子类和父类具有相同名称的实例变量时,子类的实例变量会隐藏父类的实例变量。

      class Animal {
          String name = "Animal";
      }
      
      class Dog extends Animal {
          String name = "Dog";
      
          void display() {
              System.out.println(name); // prints "Dog"
              System.out.println(); // prints "Animal"
          }
      }
      

      5.1.6 方法重写和方法重载

      • 方法重写(Override):子类提供超类中某个方法的特定实现版本。
      • 方法重载(Overload):在一个类中定义多个方法名相同,但参数不同的方法。
      class Animal {
          void eat() {
              System.out.println("Animal eats");
          }
      }
      
      class Dog extends Animal {
          @Override
          void eat() {
              System.out.println("Dog eats");
          }
      }
      

      5.1.7 子类对父类类成员的访问

              子类可以访问父类的所有非private成员。如果需要访问隐藏的成员或调用被覆盖的方法,可以使用super关键字。

      概念与描述表格:

      概念 描述 代码示例
      子类对象的创建和super 子类构造方法创建时,会隐式或显式地调用父类的构造方法 class Dog extends Animal { Dog() { super(); } }
      继承关系中的内存分配 创建子类对象时,会为父类成员分配内存空间,以便可以使用它们 表述概念,不直接对应代码示例
      实例变量的隐藏 子类可以定义与父类同名的实例变量,此时父类的变量被隐藏 class Dog extends Animal { String name = "Dog"; void display() { System.out.println(); } }
      方法重写和方法重载 重写是子类提供父类方法的特定实现。重载是定义名称相同但参数列表不同的方法 重写:class Dog extends Animal { @Override void eat() { ... } } 重载:在同一类中 void eat() { ... } void eat(String food) { ... }
      子类对父类成员的访问 子类可以访问父类的所有非private成员,必要时可以使用super关键字访问被隐藏的成员或被覆盖的方法 class Dog extends Animal { void display() { System.out.println(); } }

      5.2 引用类型的转换

              在Java中,类的引用变量可以表示该类的对象或该类的子类对象。

      5.2.1 上转型

              将子类类型的引用转为超类类型称为上转型,它总是安全的,因为子类对象总是也是一个超类对象。

      Animal a = new Dog(); // 发生上转型
      

      5.2.2 下转型

      将超类引用转为子类引用称为下转型。必须显式进行,并且必须确保转型是安全的。

      Animal a = new Dog();
      Dog d = (Dog)a; // 发生下转型
      
      转换类型 描述 是否安全 示例
      上转型 子类转换成父类 安全 Animal a = new Dog();
      下转型 父类转换成子类 需要确保安全 Dog d = (Dog)a;

      5.3多态

              多态是指允许不同类的对象对同一消息作出响应。在Java中,多态的实现是通过超类引用变量可以引用子类对象来实现的。

      5.3.1 静态多态

             静态多态,也称为编译时多态性,通常是通过方法重载来实现的,即在同一个类中创建多个同名方法,但是它们各自的参数列表必须不同。

      class Calculator {
          int add(int a, int b) {
              return a + b;
          }
      
          double add(double a, double b) {
              return a + b;
          }
      }
      

      5.3.2 动态多态

              动态多态,又称为运行时多态性,通过方法重写实现,即子类提供一个特定的实现,该实现覆盖了父类的方法。

      class Animal {
          void speak() {
              System.out.println("The animal speaks");
          }
      }
      
      class Dog extends Animal {
          void speak() {
              System.out.println("The dog barks");
          }
      }
      
      public class DynamicPolymorphismExample {
          public static void main(String[] args) {
              Animal myAnimal = new Animal();
              Animal myDog = new Dog(); // 通过动态多态使用Dog类
              myAnimal.speak();
              myDog.speak(); // 输出:The dog barks
          }
      }
      

      5.3.3 引用回调

              引用回调指的是当子类的引用被传递到通过超类类型参数的方法中去,该方法可以根据实际对象类型调用对应的重写方法。

      class Animal {
          void speak() {
              System.out.println("Animal speaks");
          }
      }
      
      class Cat extends Animal {
          void speak() {
              System.out.println("Cat meows");
          }
      }
      
      public class CallbackExample {
          static void performSpeak(Animal animal) {
              animal.speak(); // 引用回调
          }
      
          public static void main(String[] args) {
              Animal myCat = new Cat();
              performSpeak(myCat); // 输出:Cat meows
          }
      }
      

      5.4 final修饰符

              final关键字用于声明属性、方法和类,以指示它们不能被更改或继承。

      5.4.1 final类

              当用final修饰一个类时,表明这个类不能被继承。

      final class FinalClass {
          void display() {
              System.out.println("This is a final class and cannot be inherited.");
          }
      }
      

      5.4.2 final方法

              当用final修饰一个方法时,这个方法不能在子类中被重写。

      class Base {
          final void show() {
              System.out.println("This is a final method and cannot be overridden.");
          }
      }
      

      5.4.3 final变量

              当一个变量被声明为final,它就成了常量,不能被再次赋值。

      class Constants {
          public static final int NUM = 5;
      }
      
      public class FinalVariableExample {
          public static void main(String[] args) {
              System.out.println(Constants.NUM); // 输出:5
          }
      }
      
      概念 描述 是否可变 代码示例
      final类 类不能被继承 否 final class FinalClass { ... }
      final方法 方法不能被子类重写 否 class Base { final void show() {...} }
      final变量 变量值一经赋值后不能变 否 public static final int NUM = 5;

      5.5 Object类

              Object类是Java中所有类的超类,每个类都使用Object作为超类。所有对象(包括数组)都实现这个类的方法。

      5.5.1 Object类方法概述

              Object类提供了一些基本方法,例如:

      • clone() — 用于复制对象。
      • equals(Object obj) — 指示一些其他对象是否“相等于”此对象。
      • hashCode() — 返回对象的哈希码值。
      • toString() — 返回对象的字符串表示。
      • getClass() — 返回对象运行时的类对象。
      • notify(), notifyAll(), wait() — 与对象监视器配合,实现线程间同步。
      class Person {
          private String name;
      
          Person(String name) {
               = name;
          }
      
          @Override
          public boolean equals(Object obj) {
              if (obj instanceof Person) {
                  Person p = (Person) obj;
                  return name.equals();
              }
              return false;
          }
      
          @Override
          public int hashCode() {
              return name.hashCode();
          }
      
          @Override
          public String toString() {
              return "Person: " + name;
          }
      }
      

              通过覆盖这些方法,可以使类更容易使用,更容易与其他类相互操作。

      第六章 抽象类与接口

      6.1 抽象类

              抽象类是不能实例化的类,它可能包含抽象方法。抽象方法是没有实现的方法,它们必须在子类中被重写。

      6.1.1 抽象方法

              抽象方法是只有方法声明没有方法体的方法。如果一个类包含抽象方法,那么该类必须被声明为抽象的。

      abstract class Animal {
          abstract void speak();
      }
      
      class Dog extends Animal {
          @Override
          void speak() {
              System.out.println("The dog barks");
          }
      }
      

      6.1.2 抽象类概述

              抽象类是一种不能被实例化,只能被继承的类。如果一个类被声明为抽象的,它就不可以创建对象。

      abstract class AbstractClass {
          abstract void display();
      }
      
      class ConcreteClass extends AbstractClass {
          void display() {
              System.out.println("This is a concrete implementation of an abstract class");
          }
      }
      

              抽象类通常作为多个类的共同基类,它们的共同特点被提取出来形成抽象类。

      6.2 接口

              接口是完全抽象的类,它允许声明哪些方法必须由实现该接口的类来定义。

      6.2.1 接口的定义

              接口中可以定义抽象方法和默认方法,以及静态方法和常量。从Java 8开始,接口也可以包含默认方法和静态方法具体实现。

      interface MyInterface {
          // 抽象方法
          void doSomething();
      
          // 默认方法
          default void defaultMethod() {
              System.out.println("This is a default method");
          }
      
          // 静态方法
          static void staticMethod() {
              System.out.println("This is a static method");
          }
      }
      

      6.2.2 类与接口的关系

              一个类可以实现多个接口。实现接口的类必须提供接口中所有声明的方法的具体实现。

      class MyClass implements MyInterface {
          public void doSomething() {
              System.out.println("Doing something...");
          }
      }
      

      6.2.3 访问接口中的常量

              接口中定义的任何字段自动是public, static, final的。

      interface Constants {
          int MIN = 0;
          int MAX = 10;
      }
      
      public class ConstantsAccess {
          public static void main(String[] args) {
              int threshold = Constants.MAX; // 直接访问接口中的常量
          }
      }
      

      6.2.4 接口和接口的关系

      接口可以继承其他接口,并可以添加新的抽象方法和常量。

      interface A {
          void myMethod();
      }
      
      interface B extends A {
          void myOtherMethod();
      }
      
      概念 描述 示例
      Object类 所有类的超类 常用方法如toString(), equals()
      抽象类 不能实例化的类 abstract class Animal { abstract void speak(); }
      抽象方法 没有实现的方法 abstract void speak();
      接口 定义一组抽象方法 interface MyInterface { void doSomething(); }
      类与接口的关系 类实现接口必须定义所有接口方法 class MyClass implements MyInterface { ... }
      访问接口中的常量 接口的常量是public, static, final的 int max = Constants.MAX;
      接口继承 接口可以继承一个或多个其他接口 interface B extends A 

       

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://weidonglang.blog.csdn.net/article/details/137138085,作者:小魏冬琅,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:认识Java语言(一)

      下一篇:Java 应用的 API 性能优化:缓存与负载均衡

      相关文章

      2025-05-06 09:19:21

      【30天玩转python】高级面向对象编程

      面向对象编程(Object-Oriented Programming,简称 OOP)是 Python 的核心编程范式之一。Python 不仅支持基础的面向对象特性,如类和对象,还支持更高级的特性,如继承、多态、封装、抽象以及元类等。这些特性使得 Python 的面向对象编程更具灵活性和可扩展性。

      2025-05-06 09:19:21
      Python , 子类 , 父类 , 继承
      2025-04-23 08:18:27

      创建型模式-工厂模式

      工厂模式是一种创建型的设计模式,原理是父类提供一个创建对象的方法,允许子类去实现具体的实例化对象。通过此模式可减少创建和具体的产品之间的耦合关系。

      2025-04-23 08:18:27
      产品 , 创建 , 子类 , 工厂 , 模式
      2025-04-23 08:18:21

      行为模式---模版模式

      模版模式是设计模式行为模式的一种,它的核心思想是定义一个算法骨架,将某些步骤提取到到子类中实现。解决当项目中出现多个处理分支,这几个处理分支有重复步骤的时实现代码的复用和扩展。在这种模式下不用修改逻辑结构,使用继承机制中的子类来实现算法不同部分的处理逻辑。

      2025-04-23 08:18:21
      处理 , 子类 , 步骤 , 算法 , 逻辑
      2025-04-18 08:01:53

      Java中关于多态的问题

      Java中关于多态的问题

      2025-04-18 08:01:53
      多态 , 子类 , 对象 , 方法 , 调用
      2025-04-18 08:01:53

      Java面向对象(下)关于继承

      继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。

      2025-04-18 08:01:53
      Person , Student , 子类 , 成员 , 构造方法 , 父类 , 继承
      2025-04-18 08:01:53

      Java面向对象(下)关于重写、抽象方法和抽象类

      子类在继承父类的方法时,父类的方法无法满足子类的实际需求。

      2025-04-18 08:01:53
      子类 , 实例 , 抽象 , 抽象类 , 方法 , 父类 , 重写
      2025-04-18 07:11:02

      Java之异常(下):自定义异常类

      Java之异常(下):自定义异常类

      2025-04-18 07:11:02
      异常 , 报错 , 方法 , 父类 , 自定义 , 赋值
      2025-04-15 09:20:33

      初学Java,在构造器中调用另一个构造器(十)

      初学Java,在构造器中调用另一个构造器(十)

      2025-04-15 09:20:33
      base , Java , super , 构造 , 父类 , 调用
      2025-04-15 09:20:33

      初学Java,调用父类方法(十一)

      初学Java,调用父类方法(十一)

      2025-04-15 09:20:33
      base , Java , 关键字 , 名称 , 子类 , 方法 , 父类
      2025-04-15 09:20:22

      初学Java,泛型类型通配符(三十七)

      初学Java,泛型类型通配符(三十七)

      2025-04-15 09:20:22
      List , String , 泛型 , 父类 , 类型 , 编译 , 通配符
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5248836

      查看更多

      最新文章

      【30天玩转python】高级面向对象编程

      2025-05-06 09:19:21

      Java中关于多态的问题

      2025-04-18 08:01:53

      Java面向对象(下)关于重写、抽象方法和抽象类

      2025-04-18 08:01:53

      Java面向对象(下)关于继承

      2025-04-18 08:01:53

      Java之异常(下):自定义异常类

      2025-04-18 07:11:02

      初学Java,调用父类方法(十一)

      2025-04-15 09:20:33

      查看更多

      热门文章

      (10)Qt对象模型

      2023-02-13 07:55:59

      Java 程序设计 第6章 异常与断言 笔记

      2023-02-24 09:42:48

      C++ 核心 4.6 继承

      2023-02-24 10:08:59

      Java在子类中调用super()方法

      2023-02-07 10:34:04

      【JavaSE】 super关键字基本使用

      2023-07-26 08:09:07

      【C++】继承——切片、隐藏、默认成员函数、菱形

      2023-07-26 08:09:46

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Javase多态(对多态的理解、多态的体现)

      Java编程基础五:面向对象编程中

      JavaSE基础:面向对象

      【C++】继承(下)

      【Java】继承

      java之Thread类实战模板(全)

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号