Abstraction是一个只暴露基本细节并隐藏实现细节的概念。除了封装、继承和多态之外,它是OOPs的基本概念之一。抽象只保留与特定目的最相关的信息。
Abstraction
例如:
ArrayList将对象按顺序存储为列表,您可以使用add()方法将元素添加到 ArrayList、remove()从中删除元素的get()方法以及从 ArrayList 中检索元素的方法。这就是您使用ArrayList. 这就是java中的抽象。
add()
remove()
get()
ArrayList
如果你想使用 ArrayList,你不需要了解ArrayList内部是如何工作的。
ArrayList``List 通过实现接口来使用抽象,List 接口提供了使用ArrayList的所有必要方法。
ArrayList``List
所以你可以声明 ArrayList 如下:
List<String> list = new ArrayList<>(); list.add("Java"); list.add("Python"); list.add("C++"); list.remove("Python"); String python = list.get(1);
List 接口的调用add()和方法。remove()``get
remove()``get
假设你后来意识到你需要使用LinkedList而不是ArrayList你需要执行更多的添加和删除操作而不是访问操作。你可以通过ArrayList 与 LinkedList来了解它们之间的区别。
LinkedList
您只需要更改突出显示的行。
List<String> list = new LinkedList<>(); list.add("Java"); list.add("Python"); list.add("C++"); list.remove("Python"); String python = list.get(1);
ArrayList并LinkedList通过实现 List 接口来使用抽象,这就是我们能够在上面的示例中ArrayList替换为的原因。LinkedList
让我们再举一个现实生活中的例子。
当您在 上搜索任何文本时google,您只需在文本区域中键入文本并单击搜索按钮。幕后发生了什么,谷歌搜索算法是如何工作的,你可能不知道。
google
您可以在 java 中使用两种方式实现抽象。
抽象类是声明为抽象并且可以具有abstract or non abstract methods. 它应该由子类扩展并且应该实现抽象方法。
abstract or non abstract methods
抽象方法是没有实现的方法,即它没有任何主体。
abstract class Shape{ public abstract double calculateArea(); // No body for calculatedArea method }
接口一般用于为类提供契约来实现。接口没有任何方法的实现。一个类实现了一个接口,从而继承了接口的抽象方法。所以这是一种签订合同,你同意如果你实现了这个接口,那么你必须使用它的方法。它只是一个模式,它本身不能做任何事情。
package com.arpit.java2blog; interface Paintable { void paint(); } public class Room implements Paintable{ @Override public void paint() { System.out.println("Painting the room"); } }
可以说我们有 Sport as interface。现在它的实现将由名为“Cricket”和“Football”的类提供。在实际场景中,最终用户不会知道实现类,实现类的对象可以由工厂方法提供。工厂方法可用于根据某些标准创建实现类的对象。 让我们创建一个名为Sport.java.
interface
Sport.java
package com.arpit.java2blog; public interface Sport { void play(); }
创建名为的类Cricket.java
Cricket.java
package com.arpit.java2blog; public class Cricket implements Sport { @Override public void play() { System.out.println("Playing cricket"); } }
创建名为的类Football.java
Football.java
package com.arpit.java2blog; public class Football implements Sport { @Override public void play() { System.out.println("Playing football"); } }
创建名为的主类SportInterfaceMain.java
SportInterfaceMain.java
package com.arpit.java2blog; public class SportInterfaceMain { public static void main(String[] args) { // In real scenario, you will get concrete object using getSport() factory method Sport sport=new Cricket(); sport.play(); System.out.println("================="); // You can easily change implementation sport=new Football(); sport.play(); } }
当你运行上面的程序时,你会得到下面的输出:
Playing cricket ================= Playing football
封装是将相关数据(变量和方法)绑定到一个类中的过程。我们可以使用public、private、protected等访问修饰符来实现封装。
封装是所需抽象的实现。
抽象更多的是设计级别的概念,可帮助您仅提供基本细节并隐藏实现细节。我们可以通过abstract class和来实现抽象interface。
abstract class
您已经了解了什么是抽象,如何借助示例实现抽象以及抽象与封装之间的区别。 这就是abstractionJava中的全部内容。
abstraction
原文链接:https://codingdict.com/