Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1562391
  • 博文数量: 237
  • 博客积分: 5139
  • 博客等级: 大校
  • 技术积分: 2751
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 14:48
文章分类

全部博文(237)

文章存档

2016年(1)

2012年(4)

2011年(120)

2010年(36)

2009年(64)

2008年(12)

分类: Java

2011-03-28 16:23:04

类的修饰属性有: public, abstract, finally(default)
其中,如果类申明为 public属性时, 类名必须和文件名一致,
for example: 文件名为:BirthDate.java, 类名为:public class BirthDate {...}

类的成员(变量或者函数)的修饰属性有:public,private, protected.
其中类的方法可以访问类中的所有成员,类的对象只能访问类的公有成员
类的子类可以访问基类的public和protected成员。 子类的对象只能访问类的公有成员。

一.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"); }
阅读(687) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~