2 baidu 34040705 baidu_34040705 于 2016.02.22 08:30 提问

java里public修饰类的问题

java里没用public修饰的类 里面的方法用public修饰有什么用啊
,,就是说没被public修饰的类 里面的方法加不加public感觉没区别

6个回答

qq_26946497
qq_26946497   2016.02.22 09:00
已采纳

弄错了。。。。I'm sorry,好像还是这样才是意思。通过Override实现public接口的作用

 public class TestA {

    private N n = new N();

    public TestingInterface getN() {
        return n;
    }
}


class N implements TestingInterface{
    @Override
    public void show() {
        System.out.println("这个方法可以被执行到");
    }
}
qq_26946497
qq_26946497 回复baidu_34040705: 好像是...不知道在哪看到的这种用法,表示很少用到非public的class
2 年多之前 回复
baidu_34040705
baidu_34040705 有点乱了,,接口里面的方法默认是public的 所以别的类实现它必须要public修饰 不过感觉有点别扭啊, 接口这是默认的public修饰的方法,撇开这个不谈 没有被public修饰的类里面的方法加了public也不可能直接被其他包的类访问到, 那这个public不就没有意义了麽
2 年多之前 回复
baidu_34040705
baidu_34040705 有点乱了,,接口里面的方法默认是public的 所以别的类实现它必须要public修饰 不过感觉有点别扭啊, 接口这是默认的public修饰的方法,撇开这个不谈 没有被public修饰的类里面的方法加了public也不可能直接被其他包的类访问到, 那这个public不就没有意义了麽
2 年多之前 回复
AinUser
AinUser   2016.02.22 08:35

图片说明

AinUser
AinUser   2016.02.22 08:34

public是访问权限修饰符,与这个被修饰类或方法什么时候执行无关;

baidu_34040705
baidu_34040705 被public修饰的方法与protected修饰的方法区别是不同包之间可以访问 但是如果那个类没有被public修饰,那个类就不能被其他包中的类访问到,这时候那个类里面的方法用public修饰不就等于没加修饰符么
2 年多之前 回复
qq_26946497
qq_26946497   2016.02.22 08:52

楼主的问题是这样:

public class TestA {


}


class N {
    public void show() {
        System.out.println("这个方法有可能被执行到吗?");
    }
}

答案是这样的:

 public class TestA {

    private N n = new N();

    public void doSomething() {
        n.show();
    }
}


class N {
    public void show() {
        System.out.println("这个方法可以被执行到");
    }
}
Trent1985
Trent1985 不加public也没关系,系统会默认是public的,所以你会感觉加不加没影响!
2 年多之前 回复
baidu_34040705
baidu_34040705 这个也只是在一个包里的类互相访问, 如果把class N 里面的方法的public去掉 TestA这个类也能访问的到这个show方法
2 年多之前 回复
qq_26946497
qq_26946497   2016.02.22 09:00

弄错了。。。。I'm sorry,好像还是这样才是意思。通过Override实现public接口的作用

 public class TestA {

    private N n = new N();

    public TestingInterface getN() {
        return n;
    }
}


class N implements TestingInterface{
    @Override
    public void show() {
        System.out.println("这个方法可以被执行到");
    }
}
sinat_31535993
sinat_31535993   Rxr 2016.02.22 09:16

类的作用域,可以这么说,方法是通过类来调用的,没有声明public的类在超出他的声明范围之外,你也无法声明这个类,既然都无法声明了,那还谈什么
方法呢。就好像你想去火星种土豆,你在考虑土豆能不能活?而这个前提是你能去火星,才会有这个考虑

baidu_34040705
baidu_34040705 对,所以没有被public修饰的类 其他包里面的类根本不能直接访问到这个类, 所以这个类里面的public protected 方法就算 去掉修饰符也没有影响么
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java 类修饰属性public
java的初学者都会首先接触到一个叫做public class的东西,当然了,class我们都很好理解,可是太多人忽略了public是存在,以至于,在入门很长一段时间后,问起public这个类属性还是一头雾水,今天,我们就好好理一下这个public究竟是做什么用的。我们都知道,在class内部,我们用public修饰类属性或者类方法,表明这些属性方法的可访问范围,同理,类的public属性也有这个用
一个Java文件中只能有一个public修饰的类
每个编译单元(文件)只能有一个public类。这么做的意思是,每个编  译单元只能有一个公开的接口,而这个接口就由其public类来表示。 我想这或是从软件架构设计和安全性设计上得出的结论。或者说是java的设计者们从这方面的考虑。或许这真的是一个规范,但我没有找到相关资料 不晓得到底有没有这一说话。如果有请知道的同行给出资料来源? 实验如下: Test3.java源文件: 
java源文件当中可以有多个类,但是为什么只能有一个public类呢? 当类被修饰为public的话,为什么源文件名必须要与类名相同呢?
解析: 1、只有一个public类: 第一、每个编译单元(文件)只能有一个public 类。这么做的意思是,每个编译单元只能有一个公开的接口,而这个接口就由其public 类来表示。 第二、java程序的入口是main方法,所以被定为public的这个类里一定是含有main方法的类,而且该类的名称要和文件名一致,因为虚拟机开始要找main的。 第三、你可以根据需要,往这个文件里面添加任意多
小结在一个java源文件当中可以有多个类,但是为什么只能有一个public类呢?而当这个类被修饰为public的话,为什么源文件名必须要与类名相同呢?
Java编程思想中的一段话: 当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单元都必须有一个后缀名.java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看
一个java文件中只能有一个public修饰的类,只能有一个main方法,
一个java文件中只能有一个public修饰的类,只能有一个main方法, 也就是说,如果一个java文件有一个public修饰的类,那么java文件的名字,必须和这个public类的名字一样。 否则在eclipse这样的java编辑工具中会报错的。 有时候我们在一个java文件中创建多个类,(不带public修饰符的类)。 如下: package test; class   A{
关于main函数是否该放在public类中
// TestMain.java public class TestMain {     public static void main(String [] args)     {         System.out.println(" TestMain class ");     } }; class Hello {     public static void main(
关于为什么java中public修饰的类的类名和文件名要一致的个人看法
关于为什么java中public修饰的类的类名和文件名要一致的个人看法。(最终我认为是 防止.class文件的覆盖,为什么呢,请看我一下的实验:)
关于外部类只能用public或默认修饰的说法:
关于外部类只能用public或默认修饰的说法:我是这样理解的:这些修饰权限是针对类中的那些变量、方法、内部类来说的,而外部类已经在最外部(即不存在说在哪个类的内部,或是哪个类的子类这些范围),类作为单独文件被加载不能被修饰为私有(private)或受保护的(protected)[下面也解释了]。只有类内部的那些变量方法去针对访问权限来讨论才有意义。上述讨论权限这样说才更具意义:public: (类...
类可以用public修饰吗
1.Java保存的文件名必须与类名一致;2.如果文件中只有一个类,文件名必须与类名一致;3.一个Java文件中只能有一个public类;4.如果文件中不止一个类,文件名必须与public类名一致;5.如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。...
Java修饰符private,default,protected,public 区别的再辨识
经过本人的过滤分析,理解思路如下: 1、从private开始由小到大分为四个范围程度,存取权限逐渐递增; 2、private修饰的成员变量及方法只能在本类中使用,可直接调用; 3、到default层次存取权限开放,使得同一包内的类(包括其本包内子类)便可访问此成员变量或方法; 4、目前为止,两个层次的范围为此类内及本包内,protected和public进一步开放外包访问权限; 5、其中protected开放处于外部包的子类对其的存取权限,而public则进一步开放所有外部包类对其的存取权