SCJP认证范围 1.5 声明类成员
2011-02-18 00:01
281 查看
目标:
1.3 编写代码,将基本类型、数组、枚举和对象作为静态变量、示例变量和局部变量声明、初始化并使用。此外,使用合法的标识符为变量命名。
1.4 编写代码,声明静态和非静态方法,(如果合适的话) 使用遵循JavaBeans命名标准的方法名。此外,编写代码,声明并使用可变长度的变元列表。
前面介绍了在类声明中使用修饰符的办法,现在介绍修饰方法和变量声明的办法。
方法和实例(非局部) 变量统称为为成员(member)。可以使用访问修饰符和非访问修饰符修饰成员,并且比声明类时有更多的修饰可供选择(和组合)。
1.5.1 访问修饰符
因为方法和变量成员提供访问控制的方式通常完全相同,所以本节中将同时介绍二者。类只能使用4种访问控制级别中的两种(默认的和public),但成员可以使用全部4种:
1)public
2)prtected
3)默认的
4)private
默认的访问控制界别是在成员声明中不键入访问修饰符所得到的。默认的和protected访问控制类型除了一点区别之外,具有几乎完全相同的行为。这一点区别将在后面介绍。
一个类中的代码有权访问另一个类中的成员意味着什么?现在暂且忽略方法和变量之间的任何差别。如果类A有权访问类B的成员,就表示类B的成员对类A来说是可见的。当一个类无权访问另一个类的成员时,编译器将提示你正在试图访问一些可能不存在的内容!
需要理解如下两种不同的情形:
1) 类中的方法代码是否能够给访问另一个的的成员。
2) 子类是否能够继承其超累的成员。
第一种访问类型是:当一个类中的方法试图访问另一个类中的方法或变量时,使用点运算符(.)底啊用用方法或取得变量。例如:
第二种访问类型的中心问题是:子类通过继承能够给访问超类的哪些成员(如果存在的话),这里不是在介绍子类能否调用示例上的方法(这是第一种访问类型的一个例子),而是在介绍子类是否能够继承其超累的成员。请记住,如果子类继承了成员,则它就完全与该子类自己实际声明了该成员一样。换句话说,如果子类继承了成员,那么该子类就拥有这一成员。
图1.2(待定)比较了一个类继承另一个类的成员,以及使用另一个类示例的引用该类成员的区别。
很多访问控制(两种控制) 的中心问题是所涉及的两个类是否在同一个包中。不要忘了,如果类A本身不能被类B访问,则类A中的所有成员都不能被雷B访问。
需要了解类和成员访问的不同组合的影响(如具有public变量的默认类) 。为了理解这一点,首先介绍类的访问级别。如果累本身对另一个类不可见,则及时将其成员声明为public,也没有一个成员是可将的。只有当你确认类是可见的时候,查看其各个成员的访问级别才有意义。
1.3 编写代码,将基本类型、数组、枚举和对象作为静态变量、示例变量和局部变量声明、初始化并使用。此外,使用合法的标识符为变量命名。
1.4 编写代码,声明静态和非静态方法,(如果合适的话) 使用遵循JavaBeans命名标准的方法名。此外,编写代码,声明并使用可变长度的变元列表。
前面介绍了在类声明中使用修饰符的办法,现在介绍修饰方法和变量声明的办法。
方法和实例(非局部) 变量统称为为成员(member)。可以使用访问修饰符和非访问修饰符修饰成员,并且比声明类时有更多的修饰可供选择(和组合)。
1.5.1 访问修饰符
因为方法和变量成员提供访问控制的方式通常完全相同,所以本节中将同时介绍二者。类只能使用4种访问控制级别中的两种(默认的和public),但成员可以使用全部4种:
1)public
2)prtected
3)默认的
4)private
默认的访问控制界别是在成员声明中不键入访问修饰符所得到的。默认的和protected访问控制类型除了一点区别之外,具有几乎完全相同的行为。这一点区别将在后面介绍。
一个类中的代码有权访问另一个类中的成员意味着什么?现在暂且忽略方法和变量之间的任何差别。如果类A有权访问类B的成员,就表示类B的成员对类A来说是可见的。当一个类无权访问另一个类的成员时,编译器将提示你正在试图访问一些可能不存在的内容!
需要理解如下两种不同的情形:
1) 类中的方法代码是否能够给访问另一个的的成员。
2) 子类是否能够继承其超累的成员。
第一种访问类型是:当一个类中的方法试图访问另一个类中的方法或变量时,使用点运算符(.)底啊用用方法或取得变量。例如:
class Zoo{ public String coolMethod(){ return "Woo baby"; } } class Moo{ public void useAZoo(){ Zoo z = new Zoo(); //If the preceding line complies Moo has access //to the Zoo class // But... does it have access to the coolMethod()? System.out.println("A Zoo says, " + z.coolMethod()); //The preceding line works because Moo can access //the public method } }
第二种访问类型的中心问题是:子类通过继承能够给访问超类的哪些成员(如果存在的话),这里不是在介绍子类能否调用示例上的方法(这是第一种访问类型的一个例子),而是在介绍子类是否能够继承其超累的成员。请记住,如果子类继承了成员,则它就完全与该子类自己实际声明了该成员一样。换句话说,如果子类继承了成员,那么该子类就拥有这一成员。
class Zoo { public String coolMethod(){ return "Wow baby"; } } class Moo extends Zoo { public void useMyCoolMethod(){ System.out.println("Moo says:" + this.coolMethod()); /* The preceding line works because Moo can inherit the public method Can an instance of Moo invoke coolMethod() on an instance of Zoo? */ Zoo z = new Zoo(); System.out.println("Zoo says, " + z.coolMethod()); //coolMethod() is public, so Moo can invoke it on a Zoo //reference } }
图1.2(待定)比较了一个类继承另一个类的成员,以及使用另一个类示例的引用该类成员的区别。
很多访问控制(两种控制) 的中心问题是所涉及的两个类是否在同一个包中。不要忘了,如果类A本身不能被类B访问,则类A中的所有成员都不能被雷B访问。
需要了解类和成员访问的不同组合的影响(如具有public变量的默认类) 。为了理解这一点,首先介绍类的访问级别。如果累本身对另一个类不可见,则及时将其成员声明为public,也没有一个成员是可将的。只有当你确认类是可见的时候,查看其各个成员的访问级别才有意义。
相关文章推荐
- SCJP认证 1.5(2) 声明类成员
- SCJP认证范围 1.3声明类
- SCJP认证范围 1.4 声明接口
- SCJP认证 1.5 (3) 声明类成员
- 使用Java 1.5半年了,今天通过SCJP 5.0认证
- SCJP认证范围 1.2 标志符和Java Bean
- 声明类person,该类定义了两个数据成员,一个带参的构造方法,一个具有两个参数的构造方法,一个方法prin()
- 统计实例的个数:通过声明类的静态数据成员方式解决
- 北大 C++ 2.4 类成员的可访问范围
- 一位仁兄的学习心得---考试认证:SCJP 310-035考试心得
- SCJP认证 2.5 引用变量强制转换(1)
- 上午通过了SCJP1.4认证考试
- Java程序员的认证Sun Certified JAVA Programmer(SCJP)
- SCJP认证复习~3
- protected修饰的成员属性和方法的可见范围:子类或同一个包中的类
- C++类中成员变量和函数的访问范围
- 错误修订:SCJP认证套题解析之二第40题
- SCJP认证 1.7小结(声明访问控制)
- 为SCJP认证考试而努力-4
- C++使用static的错误:无法解析的外部符号、“static”不应在文件范围内定义的成员函数上使用