首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当类具有与导入的方法同名的方法时,import static不起作用

当类具有与导入的方法同名的方法时,import static 不起作用,这是因为 Java 编译器无法确定使用哪个方法。在这种情况下,您需要使用完全限定的方法名称来调用方法,以便编译器知道您要使用哪个方法。

例如,假设您有两个类,AB,它们都有一个名为 doSomething() 的方法。现在,您想使用 import static 来导入这两个方法,但是编译器无法确定哪个方法应该被调用。

代码语言:java
复制
class A {
    public static void doSomething() {
        System.out.println("A.doSomething()");
    }
}

class B {
    public static void doSomething() {
        System.out.println("B.doSomething()");
    }
}

为了解决这个问题,您可以使用完全限定的方法名称来调用方法。

代码语言:java
复制
public class Main {
    public static void main(String[] args) {
        A.doSomething();
        B.doSomething();
    }
}

这将输出:

代码语言:txt
复制
A.doSomething()
B.doSomething()

总之,当类具有与导入的方法同名的方法时,import static 不起作用。您需要使用完全限定的方法名称来调用方法,以便编译器知道您要使用哪个方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

当类中的方法全部都是 static 关键字修饰时 ,它的构造方法最好作为 private 私有化,理由是方法全是 static, 不知道的人会去new对象去调用,需要调用构造方法。 但 static的

当类中的方法全部都是 static 关键字修饰时 ,它的构造方法最好作为 private 私有化,理由是方法全是 static, 不知道的人会去new对象去调用,需要调用构造方法。...但 static的方法直接用类名调用就行!...可以通过类名调用。     其实它本身也可以通过对象名调用。     推荐使用类名调用。     静态修饰的内容一般我们称其为:与类相关的,类成员。...B:内存中位置不同     静态变量存储于方法区的静态区。     成员变量存储于堆内存。   C:内存出现时间不同     静态变量随着类的加载而加载,随着类的消失而消失。     ...static 被jvm调用,不用创建对象,直接类名访问。     void 被jvm调用,不需要给jvm返回值。     main 是一个通用的名称,虽然不是关键字,但是被jvm识别。

1.1K20

包、继承以及 LeetCode 27、28题

用命令行编译时,用 javac -d . xxx.java 会生成包层次相同的目录结构。 位于包中的类,在文件系统中也必须有与包命层次相同的目录结构。推荐用上述方法编译。...1.3 import static import static 用于导入指定类的某个静态成员变量、方法或全部的静态成员变量、方法。...Object 类是所有类的父类,要么是其直接父类,要么是其间接 父类。 2.2 重写父类的方法 子类包含与父类同名方法的现象被称为方法重写( Override),也被称为方法覆盖。...如果子类中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,依然不是重写,只是在子类中重新定义了一个新方法。 父类方法和子类方法也可以发生重载!...和 this 一样不能在静态方法中使用。 当子类和父类拥有同名变量时,子类方法里访问的默认是子类定义的变量,父类的变量需要用 super 前缀来访问。

47410
  • Java 静态导入:规则、实践与应用场景

    静态导入介绍静态导入可让开发者直接访问其他类或接口的静态成员,无需指定所属类名。能直接调用静态方法或使用静态变量,如同是当前类一部分。使用静态导入很简单,在导入语句前加关键字static。...如要直接用Math类的pow方法,可这样写。之后在代码中能直接调用pow(),无需Math.pow()。import static java.lang.Math.pow;2....规则与限制仅限静态成员:只能导入静态方法和静态字段,尝试导入非静态成员会导致编译错误。不适用于实例:不能静态导入实例方法或实例变量,因为它们依赖于对象实例。...顶级类型:通常,静态导入用于顶级类或接口的静态成员,内部类的静态成员需要明确指定路径。避免命名冲突:静态导入可能引起命名冲突,特别是当导入多个具有相同名称静态成员的类时。3....,我们可以使用静态导入来直接调用这些方法,无需每次写出完整的类名:import com.example.utils.StringUtils;import static com.example.utils.StringUtils.toUpperCase

    9610

    关于JAVA你必须知道的那些事(二):封装

    构造方法的调用必须配合new关键字,不能被对象单独调用。注意,构造方法必须与类同名且没有返回值。 方法名中的参数列表可有可无,但是只能在对象实例化的时候被调用。...当没有指定构造方法时,系统会自动添加无参的构造方法;当有指定的构造方法时,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法,一个类中可以有多个构造方法。...还有就是包的效率问题,建议采用import包名.类名的方式进行包的导入,这样可以提高加载效率 import net.oschina.Test.*; // 加载包下的所有类import net.oschina.Test.Java...; // 加载指定包下的指定类 注意一下,加载类的顺序跟import导入语句的位置无关:指定的具体包的优先级大于通配符。...当代码块出现在方法里的时候,叫做普通代码块,普通代码块和一般语句的执行顺序是一样的:从上到下,顺序执行,先出现,,先执行。 当代码块直接在类中定义,与成员方法,属性并列时,我们此时称之为构造代码块。

    50810

    【JavaSE专栏22】一文吃透Java的包机制

    需要注意的是,使用通配符导入整个包可能会导致名称冲突问题,特别是当多个包中存在相同名称的类时。 因此,同学们在导入时要小心,并确保没有类名冲突。...请注意,虽然可以使用 import 语句来导入其他包中的类,但如果引用的类与当前包中的类具有相同的名称,仍然需要使用完全限定名来区分它们。...默认(不使用任何修饰符):默认访问修饰符,当没有指定任何访问修饰符时,默认情况下类、接口、方法和变量具有默认访问权限。默认访问权限限定了只能在同一包中进行访问,不同包中的类无法访问。...当尝试编译此代码时,编译器将无法确定使用哪个 MyClass 类,因为它们具有相同的名称,这将导致编译错误和命名冲突。 要解决这个问题,可以通过显式指定完整的包路径或者使用不同的类名来避免命名冲突。...Java 在包的命名上遵循了一定的规范,但仍可能存在包名称冲突的问题,当不同的包中存在相同名称的类时,就会发生包名称冲突。

    60120

    java中import作用详解

    import与package机制相关,这里先从package入手,再讲述import以及static import的作用。...相同的,全世界的 Java 类数量,恐怕比日本人还多,如果类别不使用package名称,那在用到相同名称的不同类时, 就会产生极大的困扰。所以package这种方式让极大降低了类之间的命名冲突。...导入的类或接口的简名(simple name)具有编译单元作用域。这表示该类型简名可以在导入语句所在的编译单元的任何地方使用.这并不意味着你可以使用该类型所有成员的简名,而只能使用类型自身的简名。...现在用static import的方式: //**精准导入** //直接导入具体的静态变量、常量、方法方法,注意导入方法直接写方法名不需要括号。...例如在进行Static Import的时候,出现了“两个导入语句导入同名的静态成员”的情况。

    1.1K20

    java类和对象(上.2)

    前面我们已经介绍了类的属性和方法,那么我们在这里开始谈一下,类的构造器 类的成员之三:构造器(构造方法) 构造器的特征 它具有与类相同的名称 它不声明返回值类型。...当形参与成员变量同名时, 如果在方法内或构造器内需要 使用成员变量,必须添加this来 表明该变量是类的成员变量 3.使用this访问属性和方法时, 如果在本类中未找到,会从父 类中查找 下面是代码操练...在源文件中使用import显式的导入指定包下的类或接口 2. 声明在包的声明和类的声明之间。 3. 如果需要导入多个类或接口,那么就并列显式多个import语句即可 4....如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的 是哪个类。 7. 如果已经导入java.a包下的类。...那么如果需要使用a包的子包下的类的话,仍然需要导入。 8. import static组合的使用:调用指定类或接口下的静态的属性或方法

    26650

    Groovy 语言结构-包名,imports导入知识学习

    示例如下: import static Boolean.FALSE println(FALSE) //输出false 这类似于Java的静态导入功能,但比Java更动态,因为它允许您定义与导入方法同名的方法...)) //输出 1024 } } 如果具有相同的类型,则导入的类优先。...在静态导入下,我们添加*号后与常规星形导入非常相似。区别在于它将从给定类导入所有静态方法。 例如,假设我们需要为应用程序计算正弦和余弦。...类java.lang.Path具有名为sin和cos的静态方法,符合我们的需要。...借助静态星形导入,示例如下: import static java.lang.Math.* //我的类中没有sin 和cos方法,以下方法通过import static 导入的Math类中的静态方法 println

    1.8K20

    Java的包机制以及import、static import的用法详解(看这篇就够了)

    三分钟搞明白Java的包机制以及import、static import的用法 概述 包机制是 Java 中管理类的重要手段。包对于类,相当于文件夹对于文件的作用。...同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。...和com.a.b.c三者没有包含关系,是三个完全独立的包 import 如果我们要使用其他包的类,需要使用 import 导入,从而可以在本类中直接通过类名来调用,否则就需要书写类的完整包名和类名。...如果导入两个同名的类,只能用包名+类名来显示调用相关类。...static import 静态导入(static import)是在 JDK1.5 新增的功能,其作用是用于导入指定类的静态属性和静态方法,这样我们可以直接使用静态属性和静态方法。

    2K40

    python 入门学习—模块导入三种方式及中文凝视

    仅仅要导入了一个模块,就能够引用它的不论什么公共的函数、类或属性。模块能够通过这样的方法来使用其他模块的功能。 用import语句导入模块。...就在当前的名称空间(namespace)建立了一个到该模块的引用.这样的引用必须使用全称,也就是说,当使用在被导入模块中定义的函数时,必须包括模块的名字。...import funcname  from modname import fa, fb, fc  或者  from modname import *  与第1种方法的差别:funcname 被直接导入到本地名字空间去了...modname没有被定义,所以modname.funcname这样的方式不起作用。而且。假设funcname假设已经被定义,它会被新版本号(该导入模块中的版本号)所替代。...而不想要其他的,使用 from module import  3)假设模块包括的属性和方法与你的某个模块同名,你必须使用import module来避免名字冲突  4)尽量少用 from module

    39820

    Java基础:六、包 (1)

    = new ArrayList(); } } 要想导入其中所有的类,只需要使用import java.util.* 之所以要导入,就是要提供一个管理名字空间的机制。...所有类成员的名称都是彼此隔离的。A类中的方法f()与B类中具有相同特征标记(参数列表)的方法f()不会彼此冲突。而类名称防止冲突,是通过Java对名称空间的完全控制并为每个类创建唯一标识符组合。...当编写一个Java源代码文件时,此文件通常被称为编译单元。...如果在编译单元之中还有额外的类的化,那么在包之外的世界是无法看见这些类的,这是因为它们不是public类,而且它们主要用来为主public类提供支持 代码组织 当编译一个.java文件时,在.java文件中的每个类都会有一个输出文件...解释器就在这些目录中查找与你想要创建的类名称相关的.class文件。 冲突 如果将两个含有相同名称的类库以 * 的形式同时导入?

    57210

    Java学习笔记-全栈-Java基础-06-面向对象中的重点

    静态初始化块 在类中使用static修饰一个代码块,会在创建类的时候执行。...静态导入 用于导入指定类的静态属性 Import static java.lang.Math.*; //导入Math中所有静态属性 Import static java.lang.Math.PI; //...导入静态属性PI 4.重写与重载方法的三个要求 重写:子类中方法与父类中方法同名; 重载:当前类中方法同名 4.1 重写的三个要求 1.“==”: 方法名、形参列表相同。...一般的编辑器都有自动生成快捷键。 对于方法,一般公有化。 8. 多态 Java的引用类型分为“编译时类型”,“运行时类型”。当编译类型和运行类型不一致时,就发生了多态。...发生多态时,父类和子类拥有同名的静态方法和成员变量,则不发生动态绑定,实际调用的还是父类的静态方法和成员变量。 10. 抽象类与接口 抽象:定义规范,严格限制子类的设计,使子类之间更加通用。

    41720

    知识改变命运 第八集(下):Java中的类和对象

    包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在 不同的包中即可。 6.3.2 导入包中的类 Java 中已经提供了很多现成的类供我们使用....(date.getTime()); } } 可以使用import static导入包中静态的方法和字段 import static java.lang.Math.*; public class Test...注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性 静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。...b = 200; methodA(); methodB(); // 如果外部类和实例内部类中具有相同名称成员时,优先访问的是内部类自己的...实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名 称.

    8810

    Super访问父类成员

    1 问题 当子类的成员变量或方法与父类同名时,可能模糊不清,应该怎么解决?如果子类重写了父类的某一个方法,我们又该怎么调用父类的方法?...2 方法 super调用成员属性: 当父类和子类具有相同的数据成员时,可能会模糊不清。我们可以使用以下代码片段更清楚地理解它。...创建一个父类Person,并有属性年龄: 创建一个子类Student,具有和父类相同的属性: 测试类: super调用成员方法: 当父类和子类都具有相同的方法名时,可以使用 super 关键字访问父类的方法...s = new Student(); s.display(); } } 3 结语 针对super访问父类成员问题,通过实验,当子类的成员变量或方法与父类同名时,可以使用 super...在以前的学习中,不清楚super的用法,本次实验让我们深刻理解到super在访问父类成员属性以及方法时的作用。

    13310

    《Java从入门到失业》第四章:类和对象(4.5):包

    前面我们接触过访问修饰符public、private,其实还有一个protected,它们可以用来修饰类、属性及方法,当类、属性或方法不用任何访问修饰符修饰的时候,我们可以认为有一个default修饰符在修饰它们...有的时候还存在一个问题,当2个包下存在同名的类时,比如在JDK中存在java.util.Date和java.sql.Date,如果我们用了如下语句: import java.util.*; import...当然,我们可以静态导入整个类的静态属性和方法: import static java.lang.System.*; 不过说实话,我不太喜欢使用静态导入,有的时候反而引起一些阅读障碍。...4.5.5小结        通过本小结的讨论,我们知道: 包可以解决类名冲突,一个类的完整类名是包名.类名 在一个类中访问其他类,可以写完整的类名,也可以用import语句导入;从Java5.0开始还可以导入静态方法和静态属性...包可以隔离访问权限,默认修饰的类、方法、属性可以被同包的其他类访问。 另外,包主要是让编译器知道如何定位到类,当编译成字节码class文件后,class文件中都是采用完整类名的方式来引用其他类。

    52430

    JAVA学习(2)

    接口只能定义静态常量,抽象类可以定义非静态变量。一个实体类可以实现多个接口,但只能继承一个抽象类。更新声明default 方法:更新接口时添加的新方法,允许旧类实现接口而不实现该方法。...可以直接在接口内实现,供没有定义的旧类直接使用。若类中实现了该方法则覆盖。如果类实现了多个接口且拥有同名 default 方法:两个接口若存在继承关系,调用时优先使用子类方法。...如果没有导入对应 java 文件,或者导入了多个同名 java 文件,在调用类 / 接口时需要标明路径。...文件,但不包括内部 static 变量和方法import java.net.*; // 导入路径下所有 java 文件,但不包括下属文件夹...import static java.lang.Math.PI; // 导入 java 文件中的 static 变量或方法public class Test{

    18020

    Super访问父类成员

    1 问题 当子类的成员变量或方法与父类同名时,可能模糊不清,应该怎么解决?如果子类重写了父类的某一个方法,我们又该怎么调用父类的方法?...2 方法 super调用成员属性: 当父类和子类具有相同的数据成员时,可能会模糊不清。我们可以使用以下代码片段更清楚地理解它。...创建一个父类Person,并有属性年龄: 创建一个子类Student,具有和父类相同的属性: 测试类: super调用成员方法: 当父类和子类都具有相同的方法名时,可以使用 super 关键字访问父类的方法...s = new Student(); s.display(); } } 3 结语 针对super访问父类成员问题,通过实验,当子类的成员变量或方法与父类同名时,可以使用 super...在以前的学习中,不清楚super的用法,本次实验让我们深刻理解到super在访问父类成员属性以及方法时的作用。

    9710

    Java入门(10)-- 类的高级特性

    10.1 Java类包 10.1.1 类名冲突 在Java中每定义好一个类,通过Java编译器进行编译之后,都会生成一个扩展名为.class的文件,当程序的规模逐渐扩大时,就很容易发生类名冲突的现象,...10.1.2 完整的类路径 一个完整的类名需要包名与类名的组合,每个类都隶属于一个类包,只要保证同一类包中的类名不同,就可以有效地避免同名类冲突的情况。 同一个包中的类相互访问时,可以不指定报名。...另外,当使用import指定了一个包中的所有类时,并不会指定这个包的子包中的类,如果用到这个包中的子类,需要再次对子包作单独引用。 使用DOS命令设置编译后类文件产生的位置: javac -d ....使用import导入静态成员(JDK5.0以上版本) 语法:import static 静态成员 package core; import static java.lang.Math.max;//导入静态成员方法...a2由于被声明为static final形式,在内存中为a2开辟了一个恒定不变的区域,当再次实例化一个FinalData对象时,仍然指向a2这块内存区域,所以a2的值保持不变。

    40830

    赶在 520 之前给您来份 Java 的面向对象小抄

    比如下面这段代码中,当 p 调用 printAll() 方法的时候,该方法中的 this 等同于 p,this 与 p 指向同一个对象实例。...子类与对象 使用子类的构造方法创建一个子类的对象时,子类和父类的成员变量都分配了内存空间,其实通过上述 super 可以看到,父类的构造方法也被调用了,因此相当父类也是被创建了的。...在内部类中需要注意以下几点: 如果成员域具有 static 属性,那么必须要有 final 属性,即 final static; 不能含有 static 属性的成员方法; 创建该内部类的对象实例时,需要先创建外部类的对象...; 不能具有抽象方法或属性,不能有 static 属性的成员变量和方法(假如成员变量具有 static 属性,那么必须要有 final 属性); 匿名类实例对象的方法,通过它父类型的引用变量来访问。...按需类型导入(type-import-on-demand),例如 import java.io.*。按需导入不是导入一个包下的所有类,而是导入当前类需要使用的类。

    64220
    领券