java中public用法

java初学者,不太懂得public的用法,请高手指点迷津classPerson{Stringname;intage;publicPerson()//这里不明白{}pub... java初学者,不太懂得public的用法,请高手指点迷津
class Person
{
String name;
int age;
public Person() // 这里不明白
{
}
public Person(String name,int age) // 这里也不明白
{
this.name=name;
this.age=age;
}
public String talk() //这里还是不明白,为什么不是void talk()
{
return"我是"+this.name+",今年“+this.age+”岁“
}
}
.......
展开
 我来答
郭某人来此
2015-09-11 · TA获得超过1645个赞
知道答主
回答量:952
采纳率:100%
帮助的人:85.4万
展开全部
一.Java访问权限饰词(access specifiers)
Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。
1. friendly
1) 果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是friendly。同一个package内的其它所有classes都可以访问friendly成员,但对package以外的classes则形同private。
2)对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的default package,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package, 但隶属于相同的default package。
class Sundae{
//以下两个方法缺省为friendly
Sundae(){}
Void f() {System.out.println(“Sundae.f()”);
}
public class IceCream{
public static void main(String[] args){
Sundae x = new Sundae();
x.f();
}
}
2. public:可以被任何class调用
3. private:private成员只能在成员所属的class内被调用,如:
class Sundae{
private Sundae(){}//只能在Sundae class中被调用
Sundae(int i) {}
static Sundae makASundae() {
return new Sundae();
}
}
public class IceCream{
public static void main(String[] args){
// Sundae class中构造函数Sundae()是private,
// 所以不能用它进行初始化
//Sundae x = new Sundae();
Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用
Sundae z = Sundae.makASundae();
}
}
4. protected:具有friendly访问权限的同时,又能被subclass(当然包括子孙类,即子类的子类)所访问。即,既能被同一package中的classes访问,又能被protected成员所在class的subclass访问。
二.Class的访问权限
1.Class同样具有public、protect、friendly、private四种访问访问权限:
1)public:在任何地方都可被使用
2)protect、private:除了它自己,没有任何class可以使用,所以class不能是
protected或private(inner class除外)
3) friendly:同一个package中的classes能用
2. 如何调用构造函数被声明为private的class
1) 用static函数
2) 用Singteton模式
class Soup{
private Soup(){}
//(1)静态函数方法
public static Soup makeSout(){
return new Soup();
}
//(2)The "Singleton" pattern:
private static Soup ps1 = new Soup();
public static Soup access(){
return ps1;
}
public void f(String msg){
System.out.println("f(" + msg + ")");
}
}
public class Lunch{
public static void main(String[] args){
//Soup priv1 = new Soup();编译错误
Soup priv2 = Soup.makeSout();
Soup priv3 = Soup.access();
priv2.f("priv2");
priv3.f("priv3");
}
藏在心_fangzi
2013-03-08 · TA获得超过428个赞
知道小有建树答主
回答量:474
采纳率:25%
帮助的人:101万
展开全部
public Person() 构造方法
public Person(String name,int age) 有参数的构造方法
public String talk() 自定义方法
如果是void那就没有返回值了,构造方法也就没有意思了。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
推荐于2017-10-02 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3425万
展开全部
public Person() // 这里不明白

这里如果不把构造方法设成public的话 在其他包就不能实例化你这个类 这里的意思就是可以在所有的类里实例化这个类
这里如果把把构造方法设成private的话 那就是任何类都不能实例化这个类
public Person(String name,int age) // 这里也不明白

这个是构造方法的重载 更具调用不同的构造方法来实例化这个类
Preson p1 = new Preson();
这个对象的name 和age属性都是空的
Preson p2 = new Preson("张三",20);
这个对象name的值就是张三 age的值是20
至于public的说和上边一样
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dayfm2013
2013-03-08 · TA获得超过171个赞
知道答主
回答量:170
采纳率:100%
帮助的人:133万
展开全部
第一个地方:是Person的无参数的构造方法。在new Person()构造对象的时候调用。
第二个地方:是Person有参数的构造方法。在new Person("Java客", 20)构造对象的时候需要传入两个参数
第三个地方:是Person里面的一个普通成员方法。这个方法的返回类型是String,所以需要强制返回字符串值。如果是void talk(),那这个方法就不要返回值了。

public是java的修饰符,表示在任何类中都可以访问这个成员(变量或方法)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6e82a84
2013-03-08
知道答主
回答量:58
采纳率:0%
帮助的人:15.8万
展开全部
1、构造函数,定义时使用
2、所定义类是公共的,可以跨包调用
3、返回值是string类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式