「java里可以有两个类吗」一个java中可以有多个class定义
今天给各位分享java里可以有两个类吗的知识,其中也会对一个java中可以有多个class定义进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、可以在一个.java文件中写两个类吗? 和各自写在1个文件有什么分别?
- 2、一个java文件可以定义好多类吗?
- 3、一个.java文件中能有多个类吗
- 4、Spring Boot一个项目里能创建两个java类吗
- 5、Java一个类里怎么会有两个类
- 6、java怎么在一个集合里用两个类的对象
可以在一个.java文件中写两个类吗? 和各自写在1个文件有什么分别?
一个java文件中可以有任意多个类,接口或是注解..但是只能有一个类是public的,而且这个类的名字要和文件同名,比如public类名为A则文件名就应当为A.java
要说起和各自写在各自的文件中的区别就在于,其它那些不能用public修饰的类或者接口享有的是默认的访问控制权限.
即包级私有,也就是说在同一个包内是可见的,但是在包外则不可见..
一个java文件可以定义好多类吗?
一个.java文件中可以有很多类。不过注意以下几点:\x0d\x0a1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个)\x0d\x0a2.这个.java文件的文件名必须是public类的类名(一般的情况下,这里放置main方法是程序的入口。)\x0d\x0a3.若这个文件中没有public的类,则文件名随便是一个类的名字即可\x0d\x0a4.你用Javac 编译这个.java文件的时候,它会给每一个类生成一个.class文件\x0d\x0a\x0d\x0a你发的这个图能运行,因为有一个public类里面有main方法,这个main()方法是程序的入口\x0d\x0a他这个程序的执行顺序是:进入main方法后,先NEW出来了一个ChildClass的对象,子类对象进入f()方法,执行对FatherClass中f()的调用,完了自己执行后面的方法体
一个.java文件中能有多个类吗
public class DuoGeClass
{
public static void main(String[] args)
{
System.out.println("\n\t\t==========一个.java文件中能有多个类吗?==========\n");
init();
}//初始化!
private static void init()
{
new A().show();
new B().show();
new C().show();
new D().show();
}
}
class A
{
void show(){System.out.println("A类");}
}
class B
{
void show(){System.out.println("B类");}
}
class C
{
void show(){System.out.println("C类");}
}
class D
{
void show(){System.out.println("必须可以有多个类存在一个Java文件中,但是只允许一个类拥有public权限!\n");}
}
/*-----------------够清楚吗?----------------------------*/
Spring Boot一个项目里能创建两个java类吗
Spring Boot一个项目里能创建两个java类。
扩展资料:
Spring Boot提供了一种新的编程范式,能在最小的阻力下开发Spring应用程序,可以更加敏捷地开发Spring应用程序,专注于应用程序的功能,不用在Spring的配置上多花功夫,甚至完全不用配置。
Springboot最重要的是以下四个核心:
自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。起步依赖其实就是特殊的Maven依赖和Gradle依赖,利用了传递依赖解析,把常用库聚合在一起,组成了几个为特定功能而定制的依赖。
命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,无需传统项目构建。
Actuator:让你能够深入运行中的Spring Boot应用程序。Actuator提供在运行时检视应用程序内部情况的能力。安装了Actuator就能窥探应用程序的内部情况,包括如下细节:
Spring应用程序上下文里配置的Bean
Spring Boot的自动配置做的决策
应用程序取到的环境变量、系统属性、配置属性和命令行参数
应用程序里线程的当前状态
应用程序最近处理过的HTTP请求的追踪情况
各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标。
自定义配置
springboot可以使用两种影响自动配置的方式,使用显式配置进行覆盖和使用属性进行精细化配置。
覆盖 Spring Boot 自动配置
大多数情况下,自动配置的Bean刚好能满足你的需要,不需要去覆盖它们。但某些情况下,Spring Boot在自动配置时还不能很好地进行推断。我们可以在了解自动配置提供了什么之后,我们再来覆盖基础的安全配置,以满足特定的场景需求。
创建自定义的配置
覆盖自动配置很简单,就当自动配置不存在,直接显式地写一段配置。这段显式配置的形式不限,Spring支持的XML和Groovy形式配置都可以。Spring Boot会发现你的配置,随后降低自动配置的优先级,以你的配置为准。
资料来源于网络若侵权联系删除
Java一个类里怎么会有两个类
一个类文件内可以有多个类,但是java规定公共类型的类(加了public)必须只有一个,并且类文件必须和公共类型的类名相同,就是你的文件名要和带public 的类名相同.这是规定.
这就是为什么一个类文件里面不能包含两个public类型的类。
java怎么在一个集合里用两个类的对象
我遇到一个问题,我找不到自己解决的正确方法。
基本上,我有两个对象Object1和Object2,它们都具有相同类型的两个属性:
public class Object1 {
...
private String name;
private String description;
...
Object1 () {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public class Object2 {
...
private String name;
private String description;
...
Object2 () {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
现在显然在示例中,我将它们的属性设置为字符串,但实际上它们是其他类型。
注意:Object1和Object2实际上是从我需要SOAP服务的XML模型生成的类。 所以我不能修改它们。
在我的代码中的某些时候,我必须根据不同的因素访问说Object1或Object2的'name'属性。 这一点是一个事件处理程序,因此在一定时间内它会捕获一个用Object1调用的事件,而其他时候则用Object2捕获一个事件。
我的猜测是要制作一个包含这两种类型的类,并公开一个" name"属性和一个" description"属性。
这样做的标准方法是什么?
您可以为Object1和Object2创建共享接口
大声笑,我喜欢这样的问题,当它们都是相同的OO设计时,它们会得出诸如"您得到一个接口,您得到一个接口,您得到一个超类,您得到一个抽象超类,这是一个额外的接口"的答案。 都有优点/缺点的成语:)
基本上有两种方法可以做到这一点:
使用公共接口公开getter和setter。然后,让两个类都实现该接口,并让处理程序使用它。
如果可能的话(两个对象都尚未扩展其他超类),可以使用抽象超类并将属性以及getter和setter放在此处。然后,处理程序使用该超类。
请注意,这两种方法可以组合使用,即为处理程序使用接口,并使用将接口实现为适配器类的抽象超类,即可以在可能时扩展该适配器,或者在无法扩展适配器时仅实现该接口。
例:
interface Common {
String getName();
}
abstract class CommonAdapter implements Common {
String name;
String getName() {
return name;
}
//setter as well
}
//just extend the adapter and enjoy
class Object1 extends CommonAdapter {
//specific code for Object1
}
//extending not possible, so implement the interface directly
class Object2 extends SomeOtherClass implements Common {
String name;
String getName() {
return name;
}
}
class Handler {
void handle( Common c ) {
c.getName();
...
}
}
更新:
如果生成了类,则可以将这些对象创建为包装器,并将所有调用委派给实际的类,例如
class Object1CommonWrapper implements Common {
Object1 delegate;
String getName() {
return delegate.getName();
}
}
这是理论上最好的方法,完全符合OOP标准。
那将是最简单的方法,也是最明显的方法,但是我无法处理Object1和Object2,因为我是从SOAP消息所需的XML模型中生成它们的。
您可以定义Object1和Object2都实现的接口。该接口将包含您需要调用的方法,但是每个类都可以以自己的方式实现它们。
例如,它可能看起来像这样:
public interface Describable {
String getName();
String getDescription();
}
public class Object1 implements Describable {
... implements the methods in some way
}
public class Object2 implements Describable {
... implements the methods in another way
}
这样,无论需要处理这两种类型的对象的任何代码,都可以将它们称为Describable并利用多态性。例如:
Describable eventObject = ...get the object...
eventObject.getName();
eventObject.getDescription();
甚至类似:
public void handle(Describable describable) {
describable.getDescription();
... more stuff...
}
该代码不知道(或不在乎)实际上将哪种类型的对象传递给该方法,只是它可以作为Describable与它交互。
通常,这是Java和OO设计中的一个常见习语。核心库在各处使用它。
顺便说一句,继承(即,使用公共的基超类)是另一种选择。请注意,实现继承的技术需要权衡取舍,并且经常被滥用/滥用。例如,请参见此讨论。
Object1和Object2实际上是从我需要SOAP服务的XML模型生成的类。 所以我不能碰他们。
这个细节需要成为问题的一部分; 从根本上改变了您的潜在选择。
它有点取决于所述方法的行为。因此,如果:
这两个Object1 / Object2都具有与继承有关的那些方法的绝对相同的代码,并具有定义这些字段/方法的超类,并且两个对象对其进行了扩展。
两个Object1 / object2必须具有相同的方法签名,但必须以不同的方式处理内部逻辑,我将使用定义两个Object1 / 2必须实现的方法签名的接口。
使用接口或抽象类
public interface CommonObject {
//gettter and setter
}
public Class Object1 implements CommonObject { ... }
public Class Object2 implements CommonObject { ... }
public Class MainClass {
public void someMethod() {
if(someCondition) {
CommonObject obj1 = new Object1();
//use obj1
} else {
CommonObject obj2 = new Object1();
//use obj2
}
}
}
使用工厂模式
制作一个抽象类,让两个类都从中扩展
Object1和Object2实际上是从我需要SOAP服务的XML模型生成的类。 所以我不能碰他们。
关于java里可以有两个类吗和一个java中可以有多个class定义的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。