鱼金金~ 2021-12-10 20:34 采纳率: 96.8%
浏览 21
已结题

关于Java对象的问题

下图,最后main方法的对象声明在哪里,只有一个包和这个类。能创建对象后直接点调用方法吗?

img

附:以上两个接口怎么能同时定义在同一个类里呀(没有单一职责)而且我亲自写了一次也发现没报错!
而且一个类里能有多个class吗?

img

  • 写回答

1条回答 默认 最新

  • CTimet 2021-12-10 21:10
    关注

    我对于你的这些问题的回答是:
    1.方法没有对象。没有这样说的。对象是类的对象。由这个类的对象调用该类中的方法,不存在什么方法对象。
    2.main方法的使用由虚拟机处理。不能在代码中调用main。否则会报错。
    3.

    img


    这段代码,第一段是package语句,声明类的存放位置。如图所示,这个类应该放在com文件夹下的imooc文件夹下的ttest里
    第二段,interface语句声明一个接口。如图,interface one声明了一个名字叫one的接口。接口不能包含实例字段,但是可以包含常量。final int x = 22;就是声明了一个常量。不过,这里可以把final去除,因为接口中的所有字段默认都是public static final(同时,接口中的所有方法都被默认设置成public)。还有,在语法上,我们声明常量时一般用的是字母大写,这里应该把x换成X更好。虽然x没问题,但我们不推荐这样写。
    4.

    img


    这段代码与3相似,不再介绍,值得一提的是,Three类中的int值声明时可以把前面的public去掉。这个值。。设置成public没啥意义。还是和x一样,虽然没错,但是不推荐这么写。
    5.

    img


    这段代码也很好理解,用public声明了一个TestOne类,并使用implements关键字实现了one和two这两个接口。然后在test这个方法中,调用println方法输出了两个接口里的两个常量。下面的main方法中的new TestOne().test()也很好理解。这不就是实例化了一个Testone对象然后对这个对象调用了test方法嘛。换句话说,这段代码等同于:

    TestOne t = new TestOne();
    t.test();
    

    调用这个test方法后,程序会执行test方法内的语句,由于test被声明成void,所以它不会返回任何东西。println方法是test方法调用的,对TestOne这个对象没有任何影响,同样,TestOne也不会受到任何信息,它只是作为一个启动方法的载体被使用的,方法执行后他就被抛弃了,不存在任何价值。这就是为什么要用new TestOne().test()这行语句而不是TestOne t = new TestOne();t.test();了。因为这个对象启动test方法后就不存在任何价值了。给这个对象起名字几乎是多此一举。还不如直接用new后的对象直接调用呢。
    6.java文件中允许有多个类。你用class声明多少个类都没有问题。但是,用public声明的类只能在文件中有一个。被声明成public的类只能有一个且这个类名必须与文件名相同。如图,

    img


    这里声明的类TestOne类被声明为public(公共的),那么这个TestOne一定是文件名。即文件一定是TestOne.java
    不过,当类中不存在用public声明的类时。不用public声明的类里只要有一个名字和文件名相同即可,来看下面的代码:

    class a {}
    class b {}
    class c {}
    

    看,这个文件中有3个没有被public声明的类,他们是a,b,c.那么,文件名可以叫a.java,也可以叫b.java或者c.java。但是如果我在里面加一句

    public class d {}
    

    则文件名必须叫d.java

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月21日
  • 已采纳回答 12月13日
  • 创建了问题 12月10日

悬赏问题

  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 Ubuntu开机显示器只显示kernel,是没操作系统(相关搜索:显卡驱动)
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?
  • ¥15 通信专业本科生论文选这两个哪个方向好研究呀
  • ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用