Java语言面向对象特性简介

需积分: 9 1 下载量 171 浏览量 更新于2024-08-01 收藏 1.07MB PPT 举报
"第三章Java语言的面向对象特征" 在Java语言中,面向对象特性是其核心设计理念之一,这一特性使得Java成为一种强大的、适用于复杂系统开发的编程语言。本章主要探讨了Java的面向对象特性,包括基本概念、对象和类的定义以及面向对象方法学的各个方面。 首先,面向对象的基本概念源自于范畴论和认识论。范畴论认为,世界由一系列相互联系的实体组成,而这些实体可以被归类到具有相似性质的组中。认识论则强调,我们通过抽象的方式(即类和对象)来理解和描述客观世界。面向对象方法学就是将这种抽象应用到软件开发中,其中对象是对现实世界实体的抽象,类则是对一组具有相同属性和行为的对象的抽象。 面向对象方法学包括四个主要阶段:面向对象分析(OOA)、面向对象设计(OOD)、面向对象程序设计(OOP)以及面向对象测试(OOT)。在OOP中,程序不再由过程和过程调用构成,而是由对象和对象间的消息传递来实现。这种方式使得代码更易于维护、扩展和复用。 对象是面向对象编程的基础。在逻辑层面上,对象是对现实世界实体的一种抽象表示,它封装了数据和对这些数据进行操作的方法。在物理层面上,对象是软件中的一个实例,它包含了变量(数据)和函数(方法)。现实世界中的任何事物,如桌子、书籍、自行车等,都可以被视为对象的实例。 类是对象的模板或蓝图,它定义了一组具有共同特性和行为的对象。类包含了属性(数据成员)和方法(函数成员),这些定义了对象的状态和行为。通过创建类的实例,我们可以得到具体的对象。类的实例化是面向对象编程中的一个重要概念,它使得我们可以根据需要创建任意数量的具有相同结构和行为的对象。 在Java中,类的定义使用关键字"class",并通过构造函数初始化对象。对象之间的交互通过方法调用来实现,这些方法可能是公有的(public),允许任何其他对象访问,也可能是私有的(private),只限于类内部使用。此外,Java还支持继承(继承自其他类)、多态(一个接口有多种实现方式)和封装(隐藏对象的内部细节)等面向对象特性。 Java的面向对象特性提供了一种强大而灵活的方式来构建和组织代码,使得程序更接近人类思维,从而提高了代码的可读性和可维护性。通过理解并熟练运用这些特性,开发者能够构建出更加高效、可扩展的软件系统。

严重: web应用程序[/chapter12]中的Servlet[springmvc]引发了load()异常 java.lang.ClassNotFoundException: org.springframwork.web.servlet.DispatcherServlet at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1407) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1215) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:534) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:515) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:149) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1070) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5264) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.startup.Catalina.start(Catalina.java:772) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)

2023-06-10 上传

7.main方法参数的使用。阅读下面的代码。 --------程序清单------------------------------------------------------------------------------------------------------------ package chapter06; public class CommandLine { public static void main(String[] args) { if (args.length == 0) { System.out.println("Hello, welcome to Java!"); } else { switch (args[0]) { case "-draw" -> { for (int i = 0; i < 3; i++) { for (int j = i; j < 3; j++) System.out.print("*"); System.out.println(); } } case "-add" -> {// + int sum = 0; for (int i = 1; i < args.length; i++) { int num = Integer.parseInt(args[i]); sum += num; if (i != 1 && num > 0) System.out.print("+"); System.out.print(args[i]); } System.out.println("=" + sum); } default -> { System.out.println("no such command-line option"); } } } } } --------------------------------------------------------------------------------------------------------------------------------- 以下操作都在该类源文件所在的文件夹下。 (a)(2分)编译完该类后,如果在终端通过输入命令“java chapter06.CommandLine -cdl Wenzhou”运行该类,此时main方法的形参args其每个元素的值是什么? (b)(16分)分别通过以下命令运行该程序,其输出结果是什么?请简单说明你的理由(没有理由不给分)。 java chapter06.CommandLine -add 12 31 44 -1 -2 java chapter06.CommandLine -draw java chapter06.CommandLine java chapter06.CommandLine -cdl (c)(2分)在Eclipse里设置运行配置,然后得到(b)中第1条命令运行效果并截图。 答:

2023-05-25 上传