第三章java中的抽象示例|
介绍
Abstraction
是一个只暴露基本细节并隐藏实现细节的概念。除了封装、继承和多态之外,它是OOPs的基本概念之一。抽象只保留与特定目的最相关的信息。
例如:
ArrayList将对象按顺序存储为列表,您可以使用add()
方法将元素添加到 ArrayList、remove()
从中删除元素的get()
方法以及从 ArrayList 中检索元素的方法。这就是您使用ArrayList
. 这就是java中的抽象。
如果你想使用 ArrayList,你不需要了解ArrayList
内部是如何工作的。
ArrayList``List
通过实现接口来使用抽象,List 接口提供了使用ArrayList的所有必要方法。
所以你可以声明 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
假设你后来意识到你需要使用LinkedList
而不是ArrayList
你需要执行更多的添加和删除操作而不是访问操作。你可以通过ArrayList 与 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
,您只需在文本区域中键入文本并单击搜索按钮。幕后发生了什么,谷歌搜索算法是如何工作的,你可能不知道。
实现抽象的方法
您可以在 java 中使用两种方式实现抽象。
- 抽象类(0 到 100% 抽象)
- 接口(100% 抽象)
java中的抽象类
抽象类是声明为抽象并且可以具有abstract or non abstract methods
. 它应该由子类扩展并且应该实现抽象方法。
java中的抽象方法:
抽象方法是没有实现的方法,即它没有任何主体。
abstract class Shape{
public abstract double calculateArea(); // No body for calculatedArea method
}
java中的接口
接口一般用于为类提供契约来实现。接口没有任何方法的实现。一个类实现了一个接口,从而继承了接口的抽象方法。所以这是一种签订合同,你同意如果你实现了这个接口,那么你必须使用它的方法。它只是一个模式,它本身不能做任何事情。
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
.
package com.arpit.java2blog;
public interface Sport {
void play();
}
创建名为的类Cricket.java
package com.arpit.java2blog;
public class Cricket implements Sport {
@Override
public void play() {
System.out.println("Playing cricket");
}
}
创建名为的类Football.java
package com.arpit.java2blog;
public class Football implements Sport {
@Override
public void play() {
System.out.println("Playing football");
}
}
创建名为的主类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
。
结论
您已经了解了什么是抽象,如何借助示例实现抽象以及抽象与封装之间的区别。 这就是abstraction
Java中的全部内容。
相关文章:
- [其它]第六章JavaFutureTask示例|
- [其它]第六章JavaScheduledThreadPoolExecutor示例|
- [其它]第六章使用Callable和Future的JavaExecutorService示例|
- [其它]第六章JavanewCachedThreadPool示例|
- [其它]第六章JavanewFixedThreadPool示例|
- [其它]第五章在java中使用3个线程打印序列|
- [其它]第五章java中notify和notifyAll的区别|
- [其它]第五章我们可以在java中启动一个线程两次吗|
- [其它]第五章java中的对象级锁定与类级锁定|
- [其它]第五章Java线程连接示例|
相关推荐:
- [其它]第三章java中的抽象类|
- [其它]第四章java中的TreeMap与示例|
- [其它]第四章java中的hashcode()和equals()方法|
- [其它]第六章JavaFutureTask示例|
- [其它]计算机组成原理PDF扫描格式电子版百度云网盘下载
- [其它]程序设计语言概念(第9版)[Robert W. Sebesta]pdf格式电子版百度云网盘下载[53.8M]
- [其它]程序员必读之软件架构[Simon Brown]pdf格式电子版百度云网盘下载[41.6M]
- [其它]程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- [其它]程序员的职业素养[Robert C. Martin]pdf格式电子版百度云网盘下载[21.6M]
- [其它]程序员教程(第3版)[张淑平]pdf格式电子版百度云网盘下载[136.5M]
- 计算机组成原理PDF扫描格式电子版百度云网盘下载
- 硅谷之谜[吴军]pdf格式电子版百度云网盘下载[59.5M]
- 自选基金助手,一款Chrome扩展程序
- 七周七语言 理解多种编程范型[Bruce A. Tate]pdf格式电子版百度云网盘下载[9M]
- 系统集成项目管理工程师考试考眼分析与样卷解析(2014版)[软考新大纲研究组]
- 程序员面试金典(第5版)[Gayle Laakmann McDowell]pdf格式电子版百度云网盘下载[81.5M]
- 创业维艰 如何完成比难更难的事[Ben Horowitz]pdf格式电子版百度云网盘下载[65.3
- 程序员的思维修炼 开发认知潜能的九堂课[Andy Hunt]pdf格式电子版百度云网盘下载
- 图灵的秘密 他的生平、思想及论文解读[Charles Petzold]pdf格式电子版百度云网盘下
- OCP OCA认证考试指南全册:Oracle Database 11g(1Z0-051、1Z0-052、1Z0-053)[John Watson]pdf格式