首页 > 编程语言 >第4章:面向对象程序设计(进阶)

第4章:面向对象程序设计(进阶)

时间:2024-12-11 20:57:53浏览次数:3  
标签:makeSound 进阶 void class 面向对象 程序设计 方法 public name

4.1 封装

  • 定义:封装是面向对象编程的一个重要特性,它隐藏了对象的实现细节,并通过公共方法提供对这些细节的访问控制。

  • 实现方式:

  • 使用private修饰符限制字段的直接访问。
  • 提供公共的getter和setter方法来间接访问和修改私有字段。
public class Person {
    private String name;
    private int age;

    // Getter and Setter methods
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        }
    }
}

  

4.2 继承

  • 定义:继承允许一个类从另一个类派生,从而复用代码并建立层次化的类型关系。

  • 关键字:使用extends关键字来表示一个类继承自另一个类。

  • 方法重写(Override):

    • 子类可以重新定义父类中已有的方法以改变其行为。
    • 使用@Override注解确保正确地覆盖了父类方法。
  • 构造器调用:在子类构造器中使用super()调用父类构造器。

  • 示例:
    public class Student extends Person {
        private String studentId;
    
        public Student(String name, int age, String studentId) {
            super(name, age); // 调用父类构造器
            this.studentId = studentId;
        }
    
        @Override
        public void sayHello() {
            System.out.println("Hello, I'm a student named " + getName());
        }
    }
    

    4.3 super 关键字

    • 用途:super关键字用于引用当前对象的直接父类。
      • 可以用来调用父类的方法或访问父类的属性。
    • 场景:
    • 在子类构造器中调用父类构造器。
    • 在子类方法中调用父类同名方法。
    • public class Animal {
          public void makeSound() {
              System.out.println("Animal makes a sound.");
          }
      }
      
      public class Dog extends Animal {
          @Override
          public void makeSound() {
              super.makeSound(); // 调用父类方法
              System.out.println("Dog barks.");
          }
      }
      

      4.4 final 关键字用途

       

      final关键字可以用于修饰类、方法和变量,分别表示不可继承、不可重写和不可再赋值。

    • 类:防止其他类继承该类。
    • 方法:防止子类重写该方法。
    • 变量:声明常量,一旦赋值就不能更改。

      

    public final class Constants {
        public static final double PI = 3.14159;
    }
    
    public class Circle {
        private final double radius;
    
        public Circle(double radius) {
            this.radius = radius; // 最后一次赋值
        }
    
        public final double calculateArea() {
            return Constants.PI * radius * radius;
        }
    }
    

    4.5 Object 类
    Object是所有类的根类,每个类都隐式或显式地继承自Object
    常用方法:toString():返回对象的字符串表示形式。

    equals(Object obj):判断两个对象是否相等。

    hashCode():返回对象的哈希码值。

    public class Person {
        private String name;
    
        @Override
        public String toString() {
            return "Person{name='" + name + "'}";
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj) return true;
            if (obj == null || getClass() != obj.getClass()) return false;
            Person person = (Person) obj;
            return Objects.equals(name, person.name);
        }
    }
    

      

  • 4.6 多态

    • 定义:

      • 多态意味着不同的对象可以通过统一的接口调用相同名称的方法,在不同的上下文中表现出不同的行为。
    • 实现形式:

      • 编译时多态(静态绑定/早期绑定):通过方法重载(Overloading)实现。
      • 运行时多态(动态绑定/晚期绑定):通过方法重写(Overriding)实现。
      • Animal animal = new Dog();
        animal.makeSound(); // 实际上调用的是Dog类中的makeSound方法
        

          

      • 4.7 抽象类
      • 抽象类不能被实例化,通常用于定义其他类的共同基础。
      • 可以包含抽象方法(没有具体实现的方法)和具体方法。
      • 特点:

        • 使用abstract关键字声明。
        • 子类必须实现所有的抽象方法,除非子类也是抽象类。
        • public abstract class Animal {
              public abstract void makeSound();
          
              public void breathe() {
                  System.out.println("Breathing...");
              }
          }
          
          public class Cat extends Animal {
              @Override
              public void makeSound() {
                  System.out.println("Meow!");
              }
          }
          

            

      • 4.8 接口

        • 定义:

          • 接口是一组方法签名的集合,定义了类必须实现的行为。
          • 所有方法默认为publicabstract,所有字段默认为public static final
        • 特点:

          • 使用interface关键字声明。
          • 一个类可以实现多个接口,使用implements关键字。
          • Java 8及以后版本允许接口中定义默认方法和静态方法。
          • public abstract class Animal {
                public abstract void makeSound();
            
                public void breathe() {
                    System.out.println("Breathing...");
                }
            }
            
            public class Cat extends Animal {
                @Override
                public void makeSound() {
                    System.out.println("Meow!");
                }
            }
            

              

        • 4.9 内部类概述

          • 定义:

            • 内部类是定义在一个类内部的类,它可以访问外部类的所有成员。
          • 类型:

            • 成员内部类:作为外部类的一个成员存在。
            • 局部内部类:定义在方法或作用域内。
            • 匿名内部类:没有名字的一次性使用的类。
            • 静态内部类:使用static修饰,不依赖于外部类的实例。
          • 优势:

            • 提高代码组织的灵活性。
            • 内部类可以捕获外部类的状态,便于实现回调机制。
          • 示例:

            public class OuterClass {
                private String outerField = "Outer";
            
                public class InnerClass {
                    public void print() {
                        System.out.println(outerField); // 访问外部类的字段
                    }
                }
            }
            
            // 使用内部类
            OuterClass outer = new OuterClass();
            OuterClass.InnerClass inner = outer.new InnerClass();
            inner.print();
            

              

标签:makeSound,进阶,void,class,面向对象,程序设计,方法,public,name
From: https://www.cnblogs.com/luoye1/p/18600685

相关文章

  • 第3章:面向对象程序设计
    3.1面向对象概念定义:**面向对象编程(OOP)**是一种编程范式,它使用“对象”来设计软件。对象是数据和操作这些数据的方法的封装。核心概念:类(Class):类是对具有相同属性和行为的对象的一种抽象描述。它是创建对象的模板或蓝图。对象(Object):对象是类的具体实例,表示现实世界中......
  • # 2024-2025-1 20241310 《计算机基础与程序设计》第12周学习总结
    2024-2025-120241310《计算机基础与程序设计》第12周学习总结作业信息这个作业属于哪个课程[2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)这个作业要求在哪里2024-2025-1计算机基础与程序设计第一周作业这个作业的......
  • 《计算机基础与程序设计》第12周学习总结
    2024-2025-120241300《计算机基础与程序设计》第12周学习总结作业信息这个作业属于哪个课程(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(2024-2025-1计算机基础与程序设计第三周作业)这个作业的目标信息系统、数据库与SQL、人工智能与专家系统、人工神......
  • 嵌入式处理器程序设计(处理思路及经验篇)——开发必备的特定设计思维及POSIX标准
    嵌入式系统的核心是嵌入式处理器。嵌入式处理器一般划分为如下类型:嵌入式系统分层结构一般可如下:两层结构:硬件层、应用层(软件层)                             诸如: MCU裸机系统三层结构:硬件层(原厂芯片用库......
  • Go指针进阶:从入门到被虐,90%开发者都踩过这些坑
    Go指针进阶:从入门到被虐,90%开发者都踩过这些坑!原创 瀛洲在线编程之道 黑客编程之道  2024年11月17日21:10 吉林 听全文黑客编程之道分享黑客编程技术,Go、Python、Rust、Java等编程技术166篇原创内容公众号指针是Go语言中最强大但也最容易出错的特......
  • shodan(3)命令进阶及VNC空密码实战
    本篇文章旨在为网络安全初学者介绍渗透测试行业信息收集的引擎。通过阅读本文,读者将能够对shodan引擎工具的使用有一个初步的了解一、命令进阶1、查询平台漏洞数量shodancount'"\x03\x00\x00\x0b\x06\xd0\x00\x00\x124\x00"'2、过滤IP地址(vuln需要shodan高级账号......
  • Shell程序设计语言及其脚本和注释
    Shell程序设计语言及其脚本和注释认识Shell编程语言的种类机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;优点:执行效率最高缺点:1、二进制指令难以记忆,开发时极容易出错;2、开发程序的复杂度高:即便是完成一个简单的功能,需要......
  • Shell程序设计语言(1)
    文章目录Shell程序设计语言一、认识Shell1.1编程语言的种类1.2什么是Shellshell的优点1.3第一个shell脚本交互式环境写脚本脚本文件1.4shell脚本的运行方式方式一:输入脚本的绝对路径或相对路径方式二:bash或sh+脚本方式三:在脚本的路径前再加"或source区别:二、She......
  • 《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose
    @目录二、高级篇(大厂进阶)5.Docker-compose容器编排5.1是什么5.2能干嘛5.3去哪下5.4Compose核心概念5.5Compose使用的三个步骤5.6Compose常用命令5.7Compose编排微服务5.7.1改造升级微服务工程docker_boot5.7.2不用Compose5.7.3swagger测试5.7.4上面成功了,有哪些问题?5.7.5......
  • 树状数组进阶
    树状数组是众多数据结构中常数较小,简单好写的,很多ds题都应该优先考虑树状数组。接下来介绍树状数组的几种常见套路。单点加,区间求和区间加,单点查询区间加,区间求和二维树状数组,包括上面\(3\)个操作单点修改,求全局\(k\)小值求前驱,后继,排名等平衡树操作......