Java SE6.0 学习(访问控制)

来源:互联网 发布:javascript弹出提示框 编辑:程序博客网 时间:2024/04/30 14:03

1.包实际代表的是文件夹(目录路径),如果不将编译后的class文件放到相应的文件夹中,则无法运行。在实际开发中要想改变类所在的包,一定要修

改源代码后重新编译,只是复制/移动类文件是不行的。

2.引用包中的资源的基本语法是:
  import <包名>.*;

  import <包名>.类名;
 注意:不能使用*号代替包名,如import java.*.*;

3.两个包中有同名类,但只用到其中一个及其它不同名的类时,必须明确指出引用一个包中的具体类名。例如:java.util和java.sql包中都有名称为

Date的类,在程序中只用到java.util包中的Date类,则import部分应该写成:
import java.util.*;
import java.util.Date; //若省略了该行,在编译报错,因为不知道该匹配那个包中的Date类。
import java.sql.*;
class Sample7_2{
 public static void main(String[] args){
  Date d = new Date();
 }
}

4.两个包中有同名类,且都要使用时,真正解决的办法是在使用同名类的地方使用全称类名,将Sample7_2代码修改如下:
import java.util.*;
import java.sql.*;
class Sample7_2{
 public static void main(String[] args){
  java.util.Date d1 = new java.util.Date();
  java.sql.Date d1 = new java.sql.Date(123);
  Date d = new Date();
 }
}

5.从JavaSE 5.0开始,导入语句不但可以导入类,还可以导入静态方法和静态成员变量的功能,其语法如下:
  import static <包名>.<类名>.*;

  import static <包名>.<类名>.<具体方法/成员变量名>;
下面的例子说明了静态引入的使用,代码如下:
import static java.lang.System;     //引用System类下所有的静态成员,包括方法和成员变量
import static java.lang.Math.sqrt;  //引用Math下的sqrt方法
class Sample7_3{
 public statci void main(String[] args){
 out.println("这样也可以简单的使用打印功能!!!"); //在调用println方法时不用列出方法所在类的类名System;
 out.println("123.44的平方根为:"+sqrt(123.44));  //在调用sqrt方法时不用列出方法所在类的类名Math;
}
}
注意:实际开发时并没有很多开发人员采用静态引入,因为容易降低代码的可读性,造成维护困难。但引用算术函数和静态常量时可以简化开发。

6.每个源代码文件中可以有很多类,但只能有一个public类,该文件名必须和public的类名完全相同,若没有public的类,则可以任意命名该文件。
建议一个源代码文件对应一个类,并且不管此类是不是public类,文件名都应该与该类名相同。

7.访问限制修饰符不能用来修饰局部变量,否则将导致编译报错,而且局部变量的作用域在局部,也没这个必要。

8.java中封装需要遵循的规则:
用访问限制修饰符保护成员变量,通常是private;
建立公有的访问器方法,强制调用代码通过这些方法访问成员变量;
对于访问器方法,严格使用JavaBean命令规则set<成员变量>和get<成员变量>.
class People
{
 private int size;
 public void setSize(int newsize)
 {
    if(newsize>0)
    {
      size=newsize;
    }
    else
    {
      System.out.println("对不起,身高必须大于0,请您检查输入!!!");
    }
 }
 public int getSize()
 {
   return size;
 }
}

public class Sample7_12
{
 public static void main(String[] args)
 {
  People p = new People();
  p.setSize(-5);
 }
}

9.final修饰变量的基本含义是:
对于基本类型,一旦赋值之后,该值就不能修改。例如int x=10,则x的值将永远保持为0.
对于引用类型,一旦赋值之后,将不能重新用来引用另外一个对象,然而可以修改其引用对象的成员变量(当然该成员变量不能为final的)。

10.对于final的非静态成员变量,要求必须为其初始化,而初始化的时间只要在构造器完成之前即可,可选的时机有以下3种:
  在声明的同时初始化;
  在非静态语句块中初始化;
  在构造器中初始化。
 对于final的静态成员变量,系统也不会为其分配默认值,也要求开发人员必须进行初始化,但是其属于类,是不能等到构造器运行再为其初始化的

,因为类加载完成之后其值必须可以使用。故java中静态最终成员变量的初始化时机有两个,如下:
  在声明的同时初始化;
  在静态语句块中进行初始化。

11.被final修饰的局部变量与成员变量非常相似,不同之处是,其可以只声明而不初始化,只要不使用其值即可。
public class Sample7_16
{
 public static void main(String[] args)
 {
  final int x;
  System.out.println("没有为final的局部变量x初始化,成功通过编译,并运行!");
 }
}

12.java中用静态最终成员变量的方式来实现常量。注意:java中的关键字const不是用来声明常量的。Math类中的PI与E常量就是Math类的静态最终成

员。声明方式类如public static final int X =12; 

原创粉丝点击