锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 面向对象进阶:包、权限修饰符、抽象类、接口

面向对象进阶:包、权限修饰符、抽象类、接口

0
  • 软件开发
  • 发布于 2024-09-21
  • 0 次阅读
黄健
黄健

目录

Java面向对象进阶

包(Package)

常量

枚举(Enum)

抽象类

多态



Java面向对象进阶

在本篇博客中,我们将深入探讨Java的高级面向对象概念,包括包、权限修饰符、抽象类、接口、常量、枚举和多态。每个主题都会通过代码示例来帮助理解这些概念。

包(Package)

包是用于将类进行分门别类管理的结构,类似于文件夹,便于程序的管理和维护。

创建包

包的语法格式如下:

```java
package com.company.project;
```
  • 包语句必须位于文件的第一行。
  • 通常使用IDE工具(如IntelliJ IDEA)创建包。

导入包

  • 相同包下的类可以直接访问。

  • 不同包下的类需要导入包才能使用。

    import com.company.project.ClassName;
    

示例

```java
package com.example.model;

public class Student {
    // 类的定义
}
```

权限修饰符

权限修饰符用于控制类成员的访问范围。Java提供了四种权限修饰符:`private`、默认(无修饰符)、`protected` 和 `public`。

权限修饰符的作用范围

\| 修饰符 \| 同一类中 \| 同一包中 \| 子类中 \| 无关类中 \|
\|———-\|———-\|———-\|——–\|———-\|
\| private \| √ \| \| \| \|
\| 默认 \| √ \| √ \| \| \|
\| protected\| √ \| √ \| √ \| \|
\| public \| √ \| √ \| √ \| √ \|

示例

```java
public class Person {
    private String name; // 私有成员
    String address; // 默认成员
    protected int age; // 受保护成员
    public void display() { // 公共方法
        System.out.println("Name: " + name);
    }
}
```

final关键字

`final`关键字用于修饰类、方法和变量。

final的作用

  • **修饰类**:类不能被继承。
  • **修饰方法**:方法不能被重写。
  • **修饰变量**:变量在第一次赋值后不能被重新赋值。

示例

```java
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;
    }
}


```

常量

常量是用`public static final`修饰的成员变量,通常用于记录系统的配置数据。

示例

```java
public class Config {
    public static final String APP_NAME = "MyApp";
    public static final int MAX_USERS = 1000;
}
```

枚举(Enum)

枚举是一种特殊的Java类型,表示一组固定的常量。用于信息标志和分类。

定义枚举

```java
public enum Direction {
    NORTH, SOUTH, EAST, WEST;
}


```

示例

```java
public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER;
}

public class Main {
    public static void main(String[] args) {
        for (Season season : Season.values()) {
            System.out.println(season);
        }
    }
}
```

抽象类

抽象类是不能实例化的类,用于定义子类的公共行为。

抽象类和抽象方法

  • **抽象类**:使用`abstract`关键字定义。
  • **抽象方法**:只有方法签名,没有方法体,必须在子类中实现。

示例

```java
public abstract class Animal {
    public abstract void sound();
}

public class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Woof");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        dog.sound();
    }
}


```

多态

多态是指一个对象可以有多种形态,通常指父类引用指向子类对象。

多态的实现

  • **方法调用**:编译时看左边(父类),运行时看右边(子类)。
  • **变量调用**:编译和运行都看左边(父类)。

示例

```java
public class Animal {
    public void move() {
        System.out.println("Animal moves");
    }
}

public class Cat extends Animal {
    @Override
    public void move() {
        System.out.println("Cat moves silently");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.move();  // 输出:Cat moves silently
    }
}
```

类型转换

在多态中,有时候需要进行类型转换以使用子类的特有方法。

类型转换

  • **自动类型转换**:子类对象可以自动转换为父类类型。
  • **强制类型转换**:需要显式转换语法。

示例

```java
Animal animal = new Cat();
if (animal instanceof Cat) {
    Cat cat = (Cat) animal; // 强制类型转换
    cat.move();
}
```

通过这些示例,我们了解了Java的高级面向对象编程概念及其应用,希望这对您的学习和开发有所帮助!


如果有任何问题或需要进一步的帮助,请随时提出!

原文链接: https://blog.csdn.net/2302_80084329/article/details/140882193

标签: #软件开发 1171
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.