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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!