在java技术中主要使用oops概念构建,抽象也是oops(面向对象编程系统)概念之一,被表示为隐藏数据的过程,即它不会显示一些细节,但会显示用户屏幕仅显示与隐藏数据相关的相关信息。 java中的抽象我们可以在“抽象类和接口”的帮助下使用这些概念,这两种类型将在java中同时使用,或者根据用户的要求,我们可以使用任何类型,有时两个进程都会同时使用在程序中使用。
开始您的免费软件开发课程
网络开发、编程语言、软件测试及其他
语法
抽象将用于 java 程序中使用的两种不同类型的语法。
import packages; abstract class names { -----some logic codes--- } interface names { ----Some logic codes---- }
以上代码是java程序中适用抽象的基本语法。当我们使用抽象类时,它将同时使用抽象和非抽象方法,但接口仅接受非抽象方法。这两个概念之间有一些相似的区别。
在抽象中,它隐藏了java对象中不需要的细节,它只显示有关主题的相关信息,它主要与映射接口中称为map的java集合接口相比,它具有像hashmap这样的派生类,它将存储键值对用户数据使用 get() 和 put() 等方法从后端存储和检索数据。
抽象主要提供两种不同的方式1.数据抽象和2.控制抽象。在数据抽象中,用于创建困难的数据类型,它将用于在屏幕上公开一些有用的内容,包括数据类型。在控制抽象中,用其他编程语言编写某些数据的过程是在不同的场景中多次编写用于存储和检索数据的代码,因此这些类型的数据将被识别并与单个工作组合起来作为控制抽象。
虽然我们使用接口类型来实现抽象,这意味着它很可能必须实现这些,但在抽象类中,在抽象过程中并未完全实现,它必须部分完成。如果我们使用抽象类,如果我们想通过扩展它来将其用于完全或具体这些类中的实例,则无法创建这些类的实例。使用抽象,我们声明的方法实现可能会有所不同,当我们使用 new 运算符创建抽象类的实例时,它会抛出编译错误。
以下是下面提到的示例:
代码:
public abstract class Main { private String names; private String city; public Main(String nm, String cty){ this.names=nm; this.city=cty; } public abstract void work(); @Override public String toString(){ return "Names="+this.names+"::City="+this.city; } public void changeName(String newNames) { this.names = newNames; } } public class ClientMain extends Main { private int empId; public ClientMain(String nm, String cty, int id) { super(nm, cty); this.empId=id; } @Override public void work() { if(empId == 0){ System.<em>out</em>.println("Invalid name"); }else{ System.<em>out</em>.println("Employees List!!"); } } public static void main(String args[]){ //coding in terms of abstract classes Main m = new ClientMain("siva","tirupur",1); Main m1 = new ClientMain("raman","chennai",234); m.work(); m1.work(); //using method implemented in abstract class - inheritance m1.changeName("Sivaraman"); System.<em>out</em>.println(m1.toString()); } }
输出:
代码:
interface Animals { public void animalSounds(); public void sleep(); } class Sample implements Animals { public void animalSounds() { System.<em>out</em>.println("Animal Sounds"); } public void sleep() { System.<em>out</em>.println("Beep"); } } class ClientMain { public static void main(String[] args) { Sample s = new Sample(); s.animalSounds(); s.sleep(); } }
输出:
代码:
@FunctionalInterface interface SquareofNumbers { int numbers(int x); } class ClientMain { public static void main(String args[]) { int a = 6; SquareofNumbers s = (int i)->i*i; int result = s.numbers(a); System.<em>out</em>.println(result); } }
输出:
上面的三个例子我们使用了抽象类和接口的基本用法来在java应用程序中实现抽象,最后一个例子我们使用了java中函数式接口的概念来对给定的数字进行平方。函数式接口与接口概念,但因为它不允许在程序中使用多个抽象方法,如果假设我们使用多个抽象方法意味着它将抛出类似“意外的@功能接口注释”的错误,而我们使用功能接口时我们还声明了注释它对于有关数据概念的数据非常有帮助,即当我们需要 Java 中的元数据技术时,我们使用了称为注释的此类技术,并且我们还使用了另一个称为 lambda 表达式的概念,我们在最后一个示例中使用了减少代码空间,代码的冗余变得非常简单,程序的复杂度也降低了,编写复杂的代码很容易理解。
如果我们在类中定义了任何方法,那么我们应该将该类声明为抽象类,并且如果我们扩展抽象类并在内部类中的任何方法中使用,那么我们必须先实现该类的所有方法java技术中的抽象类我们无法创建抽象类的实例我们不能将抽象类声明为java中的final访问修饰符或关键字,因为当我们在抽象类或类中的任何方法中使用final时,它可以在应用程序的整个执行过程中都不会改变。抽象类中也不允许使用私有修饰符,它会影响父子关系继承,在抽象类中应该会受到影响,因为子类不允许使用函数/方法.
以上抽象概念是对oops的基本理解,而我们在java技术中实现同样的概念,它应该与接口和抽象类一起使用来实现抽象,但在java最新版本中,它可能会根据新功能而有所不同.
以上是Java 中的抽象的详细内容。更多信息请关注PHP中文网其他相关文章!