A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 湛添友 中级黑马   /  2014-3-26 08:14  /  946 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Encapsulation_1{
    public static void main(String[] args){
    person Z=new person();
    Z.setAge(25);
System.out.println(Z.getAge());
new person().setAge(23);
Z.speak();
   }

}

class person
{
private int age;
public void setAge(int a)
{
if(a>0&&a<150)
{
age=a;
}
else
System.out.println("非法年龄");
}
public int getAge()
{
return age;
}
void speak()
{
System.out.println("年龄是"+age);
}
}
问题  class person中
void speak()
{}
前面加public与不加有没有区别?

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

8 个回复

正序浏览
muma 中级黑马 2014-3-26 23:10:30
9#
public 只是一个权限修饰符,在继承里面用到的 还是蛮多的,但是就你这题说的话,不是你不加,前面就没有的,他有一种默认的权限,被隐式了 default ,
回复 使用道具 举报
湛添友 来自手机 中级黑马 2014-3-26 10:10:03
8#
菠萝鱼 发表于 2014-3-26 09:16
有 不加public修饰默认是default,访问权限不一样。      
                包外         子类          包 ...

thank so much!
回复 使用道具 举报
不在同一个包内的子类
回复 使用道具 举报
修饰符的作用,楼上的都介绍清楚了,另外如果是在同一个文件中,写的2个类,就只能有一个类是你的主类,第二个类就不能在加public等修饰符了
回复 使用道具 举报
菠萝鱼 发表于 2014-3-26 09:16
有 不加public修饰默认是default,访问权限不一样。      
                包外         子类          包 ...

defult权限修饰符修饰的方法可以被子类访问,都能被包中的类访问的怎么不能被子类访问,
回复 使用道具 举报
加public 是公共访问权限,不加public是包访问权限,假如speak()前面不加public,其他包中的类就无法调用这个函数就像这样
  1. package study;

  2. public class mytest2 {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub

  5.         }
  6.        
  7.         public void show(){
  8.                 System.out.println("public methol show");
  9.                
  10.         }
  11.         void show1(){
  12.                 System.out.println("defult methol show");
  13.         }

  14. }

  15. package my1;
  16. import study.mytest2;
  17. public class mytest1 {

  18.         public static void main(String[] args) {
  19.                 // TODO Auto-generated method stub
  20. mytest2 mytestobj=new mytest2();
  21. mytestobj.show();//调用public方法没有问题
  22. //无法调用mytestobj.show1();因为他是包访问权限,只有一个包中的类才能调用这个函数,二mytest2属于包my1不属于包study所以无法访问这个函数
  23.         }

  24. }

  25. package study;
  26. import study.mytest2;
  27. public class mytest3 {

  28.         public static void main(String[] args) {
  29.                 // TODO Auto-generated method stub
  30. mytest2 mytestobj=new mytest2();
  31. mytestobj.show();//可以调用mytest用public修饰的方法
  32. mytestobj.show1();//也可以调用无权限修饰符修饰的方法,即包访问权限方法,在其他包中这个方法是不能被访问的,就像my1包中的mytest1类就无法访问这个方法
  33.         }

  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
public 只是一个权限修饰符,在继承里面用到的 还是蛮多的,但是就你这题说的话,不是你不加,前面就没有的,他有一种默认的权限,被隐式了 default ,如果不加的话计算机会自动给你加上的,就是这样的吧
回复 使用道具 举报
有 不加public修饰默认是default,访问权限不一样。      
                包外         子类          包内        类内
public        yes           yes            yes         yes
protected   no           yes            yes         yes
default       no            no            yes         yes
private       no            no            no          yes
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马