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

篮之新喜  金牌会员 | 2024-5-13 02:05:28 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 874|帖子 874|积分 2632

Java 内部类

简介

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

要访问内部类,请创建外部类的对象,然后创建内部类的对象:
  1. class OuterClass {
  2.   int x = 10;
  3.   class InnerClass {
  4.     int y = 5;
  5.   }
  6. }
  7. public class Main {
  8.   public static void main(String[] args) {
  9.     OuterClass myOuter = new OuterClass();
  10.     OuterClass.InnerClass myInner = myOuter.new InnerClass();
  11.     System.out.println(myInner.y + myOuter.x);
  12.   }
  13. }
复制代码
私有内部类

与 “平凡” 类差异,内部类可以是私有的或受掩护的。如果不盼望外部对象访问内部类,请将类声明为私有:
  1. class OuterClass {
  2.   int x = 10;
  3.   private class InnerClass {
  4.     int y = 5;
  5.   }
  6. }
  7. public class Main {
  8.   public static void main(String[] args) {
  9.     OuterClass myOuter = new OuterClass();
  10.     OuterClass.InnerClass myInner = myOuter.new InnerClass(); // 错误:无法访问私有内部类
  11.     System.out.println(myInner.y + myOuter.x);
  12.   }
  13. }
复制代码
静态内部类

内部类也可以是静态的,这意味着可以在不创建外部类对象的情况下访问它:
  1. class OuterClass {
  2.   int x = 10;
  3.   static class InnerClass {
  4.     int y = 5;
  5.   }
  6. }
  7. public class Main {
  8.   public static void main(String[] args) {
  9.     OuterClass.InnerClass myInner = new OuterClass.InnerClass();
  10.     System.out.println(myInner.y);
  11.   }
  12. }
复制代码
留意: 静态内部类不能访问外部类的成员,就像静态属性和方法一样。
从内部类访问外部类

内部类的一个上风是,它们可以访问外部类的属性和方法:
  1. class OuterClass {
  2.   int x = 10;
  3.   class InnerClass {
  4.     public int myInnerMethod() {
  5.       return x;
  6.     }
  7.   }
  8. }
  9. public class Main {
  10.   public static void main(String[] args) {
  11.     OuterClass myOuter = new OuterClass();
  12.     OuterClass.InnerClass myInner = myOuter.new InnerClass();
  13.     System.out.println(myInner.myInnerMethod()); // 10
  14.   }
  15. }
复制代码
内部类提供了许多上风,例如:

  • 进步代码的可读性和可维护性
  • 允许访问外部类的成员
  • 可以是静态的,以便在不创建外部类对象的情况下使用
请根据您的需要选择合适的内部类类型。
Java 抽象类和方法

数据抽象

数据抽象是隐藏某些细节并仅向用户表现必要信息的过程。
抽象可以通过抽象类或接口来实现
抽象类

抽象类是一种受限定的类,不能用于创建对象(要访问它,必须从另一个类继承)。
抽象类可以使用 abstract 关键字声明。
抽象方法

抽象方法是一种只能在抽象类中使用的方法,它没有具体的实现体,具体的实现由子类提供。
抽象方法可以使用 abstract 关键字声明。
示例
  1. abstract class Animal {
  2.   public abstract void animalSound();
  3.   public void sleep() {
  4.     System.out.println("Zzz");
  5.   }
  6. }
  7. class Pig extends Animal {
  8.   @Override
  9.   public void animalSound() {
  10.     System.out.println("The pig says: wee wee");
  11.   }
  12. }
  13. class Main {
  14.   public static void main(String[] args) {
  15.     Pig myPig = new Pig();
  16.     myPig.animalSound();
  17.     myPig.sleep();
  18.   }
  19. }
复制代码
输出:
  1. The pig says: wee wee
  2. Zzz
复制代码
为什么使用抽象类和方法?


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


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

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

为了方便其他设备宁静台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表