首页 > 编程语言 >java笔记4

java笔记4

时间:2024-08-05 14:49:56浏览次数:14  
标签:java name 子类 void 笔记 父类 方法 public

7.封装

封装是面向对象编程的四大基本特性之一,它将对象的数据(属性)和行为(方法)组合在一起,并隐藏内部的实现细节。

何为封装

  • 封装是创建对象的过程,确保对象的内部状态只能通过对象提供的方法来访问和修改。

访问修饰符

private 关键字

  • private修饰的成员只能在类的内部访问,不能被类的外部访问。

public 关键字

  • public修饰的成员可以被任何其他类访问。

Getter 访问器 和 Setter 修改器

  • Getter:返回对象的私有属性值的方法。
  • Setter:设置对象的私有属性值的方法。

作用

  • 封装属性,提供访问和修改私有属性的接口。

this 关键字

  • this代表当前对象的引用,有以下用法:
    1. 引用当前类的属性或方法。
    2. 区分成员变量和局部变量。
    3. 在构造器中调用另一个构造器。
    4. 访问当前对象的实例方法。
    5. 返回当前对象的实例。

static 关键字

  • static表示属于类而非类的实例。

静态变量

  • 属于类的所有实例共享的变量。

静态方法

  • 属于类的所有实例共享的方法,可以通过类名直接调用。

静态代码块

  • 在类加载时执行的代码块,用于初始化静态资源。

jar包

  • Java归档包,用于分发Java类库。

第三方类库

  • 通过将第三方库打包成jar文件,可以在Java项目中引入和使用。

示例代码

// 封装的示例:定义一个Person类
public class Person {
    // 私有属性
    private String name;
    private int age;

    // 公共构造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter和Setter方法
    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    // 实例方法
    public void introduce() {
        System.out.println("Hello, my name is " + this.name + " and I am " + this.age + " years old.");
    }

    // 静态方法
    public static void greet() {
        System.out.println("Hello, this is a static method.");
    }

    // 静态代码块
    static {
        System.out.println("Static block is being initialized.");
    }
}

// 使用Person类
public class Main {
    public static void main(String[] args) {
        // 使用公共构造器实例化对象
        Person person = new Person("Alice", 30);

        // 使用Getter和Setter
        person.setName("Bob");
        person.setAge(25);
        System.out.println(person.getName() + " is " + person.getAge());

        // 调用实例方法
        person.introduce();

        // 调用静态方法
        Person.greet();

        // 静态变量和静态代码块在类被加载时初始化
    }
}

8.继承

继承是面向对象编程的四大基本特性之一,它允许新创建的类(子类)继承现有类(父类)的属性和方法。

何为继承

  • 继承是从已有的类派生出新类的过程,新类会继承父类的属性和方法,并能添加新的属性和方法或重写父类的方法。

继承的优点和缺点

优点

  • 代码复用:减少代码冗余,提高开发效率。
  • 层次结构:清晰地组织和管理类之间的关系。
  • 多态性:通过继承实现多态,使代码更灵活。

缺点

  • 耦合性:子类与父类耦合,父类的变更可能影响子类。
  • 脆弱性:继承结构可能导致代码脆弱,难以维护。
  • 限制性:限制了子类的扩展方式,只能继承一个父类(单继承)。

Object类

Java中的所有类都隐式地继承自Object类,它位于类继承层次结构的顶端。

常用的方法

  • equals(Object obj):检查两个对象是否相等。
  • hashCode():返回对象的哈希码。
  • toString():返回对象的字符串表示。
  • clone():创建并返回对象的副本。

方法重写

方法重写(Override)是子类覆盖父类中已有的方法的行为。

方法重写规则

  • 子类方法必须和父类被重写的方法具有相同的方法名、返回类型和参数列表。
  • 子类方法的访问权限不能比父类方法的访问权限更严格。
  • 子类方法不能抛出新的检查异常或更广泛的异常。

方法重写与方法重载的区别

  • 方法重写:发生在继承体系中,是子类对父类方法的覆盖。
  • 方法重载:是同一个类中多个同名方法,但参数列表不同。

super关键字

super关键字用于访问父类的属性、方法和构造器。

用法

  • 访问父类的成员变量或方法。
  • 调用父类的构造器:super();super(param);

final关键字

final关键字表示一个实体不可被修改或覆盖。

用法

  • 修饰类:表示该类不可被继承。
  • 修饰方法:表示该方法不可被重写。
  • 修饰变量:表示该变量一旦被初始化后,值就不能被改变。

示例代码

// 父类
class Animal {
    void eat() {
        System.out.println("Animal eats food.");
    }
}

// 子类继承自父类
class Dog extends Animal {
    @Override
    void eat() {
        System.out.println("Dog eats meat.");
    }

    void bark() {
        System.out.println("Dog barks.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.eat(); // 方法重写的例子
        dog.bark(); // 子类特有的方法

        // 使用super调用父类的方法或构造器
        System.out.println("The Object class method: " + dog.toString());
    }
}

标签:java,name,子类,void,笔记,父类,方法,public
From: https://www.cnblogs.com/cjsbx/p/18343229

相关文章

  • 《数据资产管理核心技术与应用》读书笔记-第一章:认识数据资产
    《数据资产管理核心技术与应用》是清华大学出版社出版的一本图书,全书共分10章,第1章主要让读者认识数据资产,了解数据资产相关的基础概念,以及数据资产的发展情况。第2~8章主要介绍大数据时代数据资产管理所涉及的核心技术,内容包括元数据的采集与存储、数据血缘、数据质量、数据监控与......
  • VisionPro二次开发学习笔记1-创建基于QuickBuild的C#应用程序
    创建基于QuickBuild的C#应用程序使用的QuickBuild应用程序位于%VPRO_ROOT%/Samples/Programming/QuickBuild/advancedAppOne.vpp中。在继续之前,可以在QuickBuild中运行该应用程序。QuickBuild应用程序使用PatMax查找支架的“耳朵”之一,使用CogFixture工具设置图像的......
  • Spring Cloud 学习笔记四:服务网关(Gateway)
    在微服务架构中,随着服务数量的增加,客户端直接与服务进行通信的方式会变得越来越复杂。为了简化客户端与服务之间的交互,同时实现一些跨服务的通用功能(如认证、限流、监控等),SpringCloud引入了服务网关(Gateway)的概念。本篇文章将详细介绍SpringCloudGateway的基本概念、使......
  • 2024最全 Java 面试八股文(程序员必备)
     一、Java基础篇1.接口和抽象类的区别相似点:(1)接口和抽象类都不能被实例化(2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法不同点:(1)抽象类可以包含普通方法和代码块,接口里只能包含抽象方法,静态方法和默认方法,(2)抽象类可以有构造方法,而接口没有(3)抽象类中的成员变......
  • 视频笔记软件JumpVideo技术解析一:Electron案例-调用VLC播放器
              大家好,我是TheGodOfKing,是最强考研学习神器,免费视频笔记应用JumpVideo,可以快速添加截图时间戳,支持所有笔记软件,学习效率MAX!的开发者之一,分享技术的目的是想找到更多志同道合的人,如果有大学生加入,我们还允许他把项目作为毕设(只有一个名额哟)群(689978959),那么今......
  • Living-Dream 系列笔记 第74期
    Kobe-Morris-Pratt算法定义一些基本定义:border:是一个字符串的子串(不与其本身相同)且满足既是其前缀又是其后缀的字符串,我们称之为该字符串的一个border。Kobe-Morris-Pratt算法(以下简称KMP算法),是解决字符串匹配问题的一种算法,实际做题中常偏思维,通常用到的只有其中的bo......
  • [学习笔记]后缀数组(Suffix Array)
    后缀数组(suffixarray)是一个通过对字符串的所有后缀经过排序后得到的数组。后缀数组被Manber和Myers于1990年提出,作为对后缀树的一种替代,更简单以及节省空间。它们也被GastonGonnet于1987年独立发现,并命名为“PAT数组”。后缀数组有很多奇妙的性质,这些性质可以帮......
  • SpringBoot-书店信息管理系统+93494(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    基于springboot书店信息管理系统摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户......
  • Jupyter设置IJava内核(VSCode)
    VScode使用Jupyter并设置IJava内核VScode使用JupyterVScode使用Jupyter需要安装相应插件安装后效果如下:IJavaIJava是一个JupyterKernel,允许你在JupyterNotebook中运行Java代码。详情可在IJava的Github地址中了解安装IJava内核需要Java9或更高版本。(如果当......
  • Java --- Stream
    Java8引入了StreamAPI,它提供了一种高效且易于表达的方式来处理集合数据。StreamAPI允许你以声明式的方式处理数据,支持函数式编程风格,使得代码更加简洁和易读。以下是关于JavaStream流的详细介绍:1.Stream流的基本概念Stream流是对集合(Collection)数据进行操作的......