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

Java 内部类

简介

在 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);
  }
}

私有内部类

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

java 复制代码
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);
  }
}

静态内部类

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

java 复制代码
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);
  }
}

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

从内部类访问外部类

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

java 复制代码
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 关键字声明。

示例

java 复制代码
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();
  }
}

输出:

java 复制代码
The pig says: wee wee
Zzz

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

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

注意

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

总结

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

最后

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

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

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

相关推荐
2402_857589365 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
HBryce248 分钟前
缓存-基础概念
java·缓存
一只爱打拳的程序猿23 分钟前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧25 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
minDuck27 分钟前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
为将者,自当识天晓地。1 小时前
c++多线程
java·开发语言
daqinzl1 小时前
java获取机器ip、mac
java·mac·ip
激流丶1 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
Themberfue1 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·