首页 > 编程语言 >Java 抽象类与方法:实现安全性与代码重用

Java 抽象类与方法:实现安全性与代码重用

时间:2024-03-05 21:59:02浏览次数:30  
标签:InnerClass Java 内部 class OuterClass 重用 抽象类 public

Java 内部类

简介

在 Java 中,可以嵌套类(即类内部的类),称为内部类。嵌套类的目的是将属于一起的类分组,从而使您的代码更可读和可维护。

访问内部类

要访问内部类,请创建外部类的对象,然后创建内部类的对象:

class OuterClass {
  int x = 10;

  class InnerClass {
    int y = 5;
  }
}

public class Main {
  public static void main(String[] args) {
    OuterClass myOuter = new OuterClass();
    OuterClass.InnerClass myInner = myOuter.new InnerClass();
    System.out.println(myInner.y + myOuter.x);
  }
}

私有内部类

与 “普通” 类不同,内部类可以是私有的或受保护的。如果不希望外部对象访问内部类,请将类声明为私有:

class OuterClass {
  int x = 10;

  private class InnerClass {
    int y = 5;
  }
}

public class Main {
  public static void main(String[] args) {
    OuterClass myOuter = new OuterClass();
    OuterClass.InnerClass myInner = myOuter.new InnerClass(); // 错误:无法访问私有内部类
    System.out.println(myInner.y + myOuter.x);
  }
}

静态内部类

内部类也可以是静态的,这意味着可以在不创建外部类对象的情况下访问它:

class OuterClass {
  int x = 10;

  static class InnerClass {
    int y = 5;
  }
}

public class Main {
  public static void main(String[] args) {
    OuterClass.InnerClass myInner = new OuterClass.InnerClass();
    System.out.println(myInner.y);
  }
}

注意: 静态内部类不能访问外部类的成员,就像静态属性和方法一样。

从内部类访问外部类

内部类的一个优势是,它们可以访问外部类的属性和方法:

class OuterClass {
  int x = 10;

  class InnerClass {
    public int myInnerMethod() {
      return x;
    }
  }
}

public class Main {
  public static void main(String[] args) {
    OuterClass myOuter = new OuterClass();
    OuterClass.InnerClass myInner = myOuter.new InnerClass();
    System.out.println(myInner.myInnerMethod()); // 10
  }
}

内部类提供了许多优势,例如:

  • 提高代码的可读性和可维护性
  • 允许访问外部类的成员
  • 可以是静态的,以便在不创建外部类对象的情况下使用

请根据您的需要选择合适的内部类类型。

Java 抽象类和方法

数据抽象

数据抽象是隐藏某些细节并仅向用户显示必要信息的过程。

抽象可以通过抽象类或接口来实现

抽象类

抽象类是一种受限制的类,不能用于创建对象(要访问它,必须从另一个类继承)。

抽象类可以使用 abstract 关键字声明。

抽象方法

抽象方法是一种只能在抽象类中使用的方法,它没有具体的实现体,具体的实现由子类提供。

抽象方法可以使用 abstract 关键字声明。

示例

abstract class Animal {
  public abstract void animalSound();

  public void sleep() {
    System.out.println("Zzz");
  }
}

class Pig extends Animal {
  @Override
  public void animalSound() {
    System.out.println("The pig says: wee wee");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig();
    myPig.animalSound();
    myPig.sleep();
  }
}

输出:

The pig says: wee wee
Zzz

为什么使用抽象类和方法?

  • 为了实现安全性 - 隐藏对象的某些细节,仅显示其重要细节。
  • 为了促进代码重用 - 抽象类可以提供通用的功能,子类可以根据需要进行扩展。
  • 为了提高代码的可读性和可维护性 - 抽象类可以帮助将代码组织成逻辑模块。

注意

  • 抽象类不能被实例化。
  • 抽象类可以包含抽象方法和常规方法。
  • 子类必须重写所有抽象方法,否则子类也是抽象类。

总结

抽象类和方法是 Java 中重要的概念,它们可以帮助您编写更安全、更可重用和更易于维护的代码。

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

标签:InnerClass,Java,内部,class,OuterClass,重用,抽象类,public
From: https://www.cnblogs.com/xiaowange/p/18055047

相关文章

  • Java集合
    Java集合Java分为单列数据集合和双列数据集合单列数据集合一次存取一个元素双列数据集合一次存取一对元素单列数据集合单列集合的祖宗(Collection)List系列集合:有序(按照添加的顺序存放)、可重复、有索引Set系列集合:无序、不可重复、无索引Collection接口方法其中......
  • Java SPI 到底是什么
    一、Java扩展机制在介绍SPI机制之前,首先要了解Java的扩展机制(Theextensionmechanism)。“扩展机制”指的是一种标准(或规范),通过遵循这种标准,用户可以自定义接口,达到丰富功能的目的。“扩展”的表现形式,就是一组Java包或者Java类。“扩展”就像热拔插设备一样,Java可......
  • Java方法03:方法的重载
    方法的重载1.重载就是一个类中,有相同的函数名称,但形参不同的函数2.放的重载的规则: 2.1方法名称必须相同2.2参数列表必须不同(个数不同、或类型不同、参数列表顺序不同等)。2.3方法的返回类型可以相同也可以不同。2.4仅仅返回......
  • js 数组筛选方法使用整理_JavaScript常用数组元素搜索或过滤
    一、常用方案介绍:如果你想找到在符合特定条件的阵列中的所有项目,使用filter。如果你想检查是否至少有一个项目符合特定的条件,请使用find。如果你想检查一个数组包含一个特定的值,请使用includes。如果要在数组中查找特定项目的索引,请使用indexOf 二、js数组筛选方法......
  • Java方法02:方法的定义和调用
    1.方法的定义1.Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:1.1方法包含一个方法头和一个方法体。下面是一个方法的所有部分:1.1.1修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该......
  • Java面向对象
    面向过程&面向对象面向过程:步骤简单清晰,第一步->第二步->....面向过程适合处理一些较为简单的问题面向对象:分类的思维模式面向对象适合处理复杂的问题对于描述复杂的事物,使用面向对象的思维去宏观上把握、整体上分析,使用面向过程的思维去处理围观操作什么是面向......
  • Java 读取 IP 地址
    使用InetAddress类可以利用Java自带的InetAddress类来检查一个字符串是否为有效的IP地址:importjava.net.InetAddress;//导入InetAddress类importjava.net.UnknownHostException;//导入错误类publicclassIPAddressUtil{//测试输入的字符串参数ip......
  • 前端基础学习2 | JavaScript
    1、什么是JavaScript相关链接:https://baike.baidu.com/item/JavaScript/321142JavaScript(简称:JS)是一门跨平台、面向对象的脚本语言,是用来控制网页行为的,它使得网页可交互。关于JavaScript有必要知道的事:1)JavaScript和Java是完全不同的语言,不论是概念还是设计,但是基础......
  • Java 切入点 JoinPoint的使用,用于拦截方法,与自定义注解
    这里的代码案例是外卖系统中,用于统一修改新增和更新内容中的更新时间与更新人内容,根据具体情况,在使用时进行自定义修改就行了第一部分是annotation的,因为是为了自动填充数据准备,所以创建annotation包后,在其中创建了AutoFill的注解类型/***自定义注解,用于标识某个方法需要用......
  • Java 读取命令行输入
    在Java中,您可以使用Scanner类从命令行读取输入。这个类属于java.util包,因此在使用之前您需要导入该包。下面是一个如何从命令行读取输入的Java程序示例:importjava.util.Scanner;//导入Scanner类publicclassMain{publicstaticvoidmain(String[]args)......