Java编程之抽象方法

简介: 分析: 抽象方法,我们来看,这是我们写的一个输出输出信息 的方法,输出信息的方法,这个方法呢,我们在每个子类当 中都有不同的事情,如果在每个子类当中都都有不同的实现 的话,也就意味着他在负类当中的实现是没有意义,这种情 况下我们去,如何把父类的这个方法,去定义层,没有带哪 块儿的,方法,这就需要我们用抽象方法,什么是触觉方法 ,语法比较简单,只需要在方法返回值的前面加上LSITY。抽象方法的特点:• 抽象方法没有方法体• 抽象方法必须定义在抽象类中• 抽象方法必须在非抽象子类中被重写• public abstra

抽象方法:

仔细观察以下代码有什么问题

```

public abstract class GZ(){

   public void show(){

   //...

   }

}

```

分析:

       抽象方法,我们来看,这是我们写的一个输出输出信息

   的方法,输出信息的方法,这个方法呢,我们在每个子类当

   中都有不同的事情,如果在每个子类当中都都有不同的实现

   的话,也就意味着他在负类当中的实现是没有意义,这种情

   况下我们去,如何把父类的这个方法,去定义层,没有带哪

   块儿的,方法,这就需要我们用抽象方法,什么是触觉方法

   ,语法比较简单,只需要在方法返回值的前面加上LSITY。

抽象方法的特点:

  • 抽象方法没有方法体
  • 抽象方法必须定义在抽象类中
  • 抽象方法必须在非抽象子类中被重写
  • public abstract void show();

## 代码理解:

父类代码如下:

image.png

publicabstractclassGZ {
privateStringname;
privateintage;
privateStringsex;
//姓名publicStringgetName(){
returnname;
     }
publicvoidsetName(Stringa){
this.name=a;
     }
//年龄publicintgetAge(){
returnage;
     }
publicvoidsetAge(intb){
this.age=b;
     }
//性别publicStringgetSex(){
returnsex;
     }
publicvoidsetSex(Stringc){
this.sex=c;
     }
publicvoidCc(Stringa,intb,Stringc){
this.setName(a);
this.setAge(b);
this.setSex(c);
     }
publicabstractvoidshow();
}

子类代码如下:

image.png

classDemoextendsGZ {
publicstaticvoidmain(String[] args) {
    }
publicvoiddc(Stringsex){
this.setSex(sex);
    }
@Overridepublicvoidshow(){
System.out.println(super.getName());
System.out.println(super.getAge());
System.out.println(super.getSex());
    }
}

解析:

       我们现在定在这里边是没有问题的,因为这个,

   父类是抽象的,当我们把父类的这个abstract去掉

   的话,我们可以看到报错了,错误的提示信息告诉

   我们,这个配置类必须是一个抽象类才可以定义抽

   象方法,也就是说,抽象方法必须包含在抽象类当

   中,但是抽象类中不一定包含,抽奖方法,好,这

   是这个特点,当我们这个累,抽象类里面的这个方

   法定义为抽象方法了以后,我们可以看到,这个就

   不能再用了,因为他没有实现,他没有方法体,

   他就报错了。

   抽象类可以限制被实例化

   抽象方法可以起到约束子类行为的作用

总结

       这是我们介绍的,抽象方法,抽象方法和抽象类

   的形式非常简单,大家重点要理解,为什么用抽象类,

   抽象方法的特点是什么,这个阶段呢,我们就讲到这

   儿,接下来大家就可以根据我们讲解的知识去练习一

   下抽象类,抽象类的定义和继承,抽象方法的定义和

   重写,修改GZ类为抽象类,修改配置类里面的方法

   为抽象方法输出相关信息。

目录
相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
Java 程序员
Java编程中的异常处理:从基础到高级
在Java的世界中,异常处理是代码健壮性的守护神。本文将带你从异常的基本概念出发,逐步深入到高级用法,探索如何优雅地处理程序中的错误和异常情况。通过实际案例,我们将一起学习如何编写更可靠、更易于维护的Java代码。准备好了吗?让我们一起踏上这段旅程,解锁Java异常处理的秘密!
|
21天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
25天前
|
算法 Java 调度
java并发编程中Monitor里的waitSet和EntryList都是做什么的
在Java并发编程中,Monitor内部包含两个重要队列:等待集(Wait Set)和入口列表(Entry List)。Wait Set用于线程的条件等待和协作,线程调用`wait()`后进入此集合,通过`notify()`或`notifyAll()`唤醒。Entry List则管理锁的竞争,未能获取锁的线程在此排队,等待锁释放后重新竞争。理解两者区别有助于设计高效的多线程程序。 - **Wait Set**:线程调用`wait()`后进入,等待条件满足被唤醒,需重新竞争锁。 - **Entry List**:多个线程竞争锁时,未获锁的线程在此排队,等待锁释放后获取锁继续执行。
61 12
|
21天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
117 2
|
2月前
|
设计模式 Java 开发者
Java多线程编程的陷阱与解决方案####
本文深入探讨了Java多线程编程中常见的问题及其解决策略。通过分析竞态条件、死锁、活锁等典型场景,并结合代码示例和实用技巧,帮助开发者有效避免这些陷阱,提升并发程序的稳定性和性能。 ####
|
2月前
|
缓存 Java 开发者
Java多线程编程的陷阱与最佳实践####
本文深入探讨了Java多线程编程中常见的陷阱,如竞态条件、死锁和内存一致性错误,并提供了实用的避免策略。通过分析典型错误案例,本文旨在帮助开发者更好地理解和掌握多线程环境下的编程技巧,从而提升并发程序的稳定性和性能。 ####
|
1月前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
1月前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
59 3
|
1月前
|
开发框架 安全 Java
Java 反射机制:动态编程的强大利器
Java反射机制允许程序在运行时检查类、接口、字段和方法的信息,并能操作对象。它提供了一种动态编程的方式,使得代码更加灵活,能够适应未知的或变化的需求,是开发框架和库的重要工具。
58 4