⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java入门(8).htm

📁 一本很容易入手
💻 HTM
📖 第 1 页 / 共 5 页
字号:
sex=s;
age=a;
 }
 public void infoPrint()
 {
System.out.println("Name:"+name);
System.out.println("Sex:"+sex);
System.out.println("Age:"+age);
 }
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  2.接着使用javac编译这个类:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
 c:javastudy&gt; javac People.java
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  3.接下来,我们构建一个使用People类的程序usePeople.java</P>
                  <P>  源程序:usePeople.java</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class usePeople 
{
 public static void main(String argv[])
 {
 People people1=new People("Kate","female","23");
 people1.infoPrint();
 }
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  3. 使用javac编译后,执行以下命令运行程序:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
c:javastudy&gt; java usePeople
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  这时,我们如愿以偿地输出了对象people1的信息:</P><A 
                  href="Java入门(8).files/8-4.jpg"><IMG alt=8-4 
                  src="Java入门(8).files/8-4.jpg" width=450 border=0></A> 
                  <P><B>  图8-4 usePeople程序的输出</B></P>
                  <P>  在这个实例中,People将数据都封装起来,usePeople则使用People类提供的两个公用的(public)方法来设置成员变量的值,以及打印这些成员变量的值。</P>
                  <P><B>  8.2.2 static特性</B></P>
                  <P><B>  实例说明</B></P>
                  <P>  1.首先,我们构建一个类myBook:</P>
                  <P>  源程序:myBook.java</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class myBook
{
 public String bookName;
 public static String ownerName=”XuFen”;
 public myBook(String bn)
 {
bookName=bn;
 }
 public void infoPrint()
 {
System.out.println("Book Name:"+bookName);
System.out.println("Owner:"+ownerName);
 }
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  2.接着使用javac编译这个类:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
c:javastudy&gt; javac myBook.java
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  3.接下来,我们构建一个使用myBook类的程序usemyBook.java</P>
                  <P>  源程序:usemyBook.java</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class usemyBook
{
 public static void main(String argv[])
 {
myBook mybook1=new myBook("C Progamming");
myBook mybook2=new myBook("Java Programming");
mybook1.infoPrint();
mybook2.infoPrint();
System.out.println("--------------------------------------");
mybook1.bookName="C Programming";
mybook1.ownerName=”XuFeng”;
mybook1.infoPrint();
mybook2.infoPrint();
 }
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  3. 使用javac编译后,执行以下命令运行程序:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
c:javastudy&gt; java usemyBook
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  程序将产生如下图所示的输出:</P><A href="Java入门(8).files/8-5.jpg"><IMG 
                  alt=8-5 src="Java入门(8).files/8-5.jpg" width=450 border=0></A> 
                  <P><B>  图8-5 usemyBook程序的输出</B></P>
                  <P><B>  传授新知</B></P>
                  <P>  我们一起来看一下这个程序,以及它所产生的输出:</P>
                  <P>  1)</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
myBook mybook1=new myBook("C Progamming");
myBook mybook2=new myBook("Java Programming");
mybook1.infoPrint();
mybook2.infoPrint();
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  在这一段程序中,我们定义了两个myBook类的对象mybook1和mybook2,并且调用它的构造器方法,将其成员变量bookName的值分别设置为“C 
                  Progamming”和“Java Programming”。</P>
                  <P>  接下来,我们调用了myBook类的成员方法infoPrint打印它们的信息,程序输出了:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
Book name: C Progamming
Owner: XuFen
Book name: Java Programming
Ower: XuFen
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  我们并没有为ownerName赋值呀,为什么会输出呢?这是因为我们在myBook类的定义中就为其赋值为“XuFen”了。所有每一个myBook类的对象都有这个成员变量了。</P>
                  <P>  由于,我们发现了mybook1的书名与拥用者名字都错了,所以我们又重新修改,再打印出新的信息:</P>
                  <P>  2)</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
mybook1.bookName="C Programming";
mybook1.ownerName=”XuFeng”;
mybook1.infoPrint();
mybook2.infoPrint();
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  首先,我们修改了成员变量bookName的值,加上了少掉的字母“r”,接着修改了成员变量ownerName的值,加上了少掉的字母“g”。</P>
                  <P>  接着,我们再看一下输出:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
Book name: C Programming
Owner: XuFeng
Book name: Java Programming
Owner: XuFeng
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  这时,我们发现mybook1的bookName与ownerName的值就修改过来了。但我们惊奇地发现,mybook2的ownerName也从“XuFen”变成了“XuFeng”。这是怎么回事呢?我们并没有对它做过修改呀!</P>
                  <P>  这时因为,我们定义ownerName时,使用了一个特殊的特性说明符static:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public static String ownerName=”XuFen”;
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  英文单词static的意思是:静态。也就是说,我们让成员变量ownerName成为静态的变量。这里静态的意思不是指它的值是不变的。而是它的存储位置是不变的。如下图所示:</P><A 
                  href="Java入门(8).files/8-6.jpg"><IMG alt=8-6 
                  src="Java入门(8).files/8-6.jpg" width=450 border=0></A> 
                  <P><B>  图8-6 static变量示意图</B></P>
                  <P>  从上图中,我们可以很清晰地知道,myBook类的两个对象mybook1和mybook2虽然都包含自己的成员变量ownerName,但它们都是指向同一个存储位置的。所以实际上只有一个。</P>
                  <P>  你现在明白为什么修改了mybook1的成员变量ownerName的值,mybook2的成员变量ownerName的值也跟着改变了吗?</P>
                  <P><B>  一些提示:</B></P>
                  <P>  同样的,static也可以用来修饰方法,即静态方法,静态方法只能访问静态数据,而不能访问非静态的变量和方法,否则将引起编译器出错。</P>
                  <P><B>  自测练习</B></P>
                  <P>  1) 定义私有变量、方法的关键字是__________。</P>
                  <P>  a.pulic b.static c.private</P>
                  <P>  2) 定义静态变量、方法的关键字是__________。</P>
                  <P>  a.pulic b.static c.private</P>
                  <P>  3) 以下几个方法,可以被外部类访问的是___________。</P>
                  <P>  a. pulic void infoPrint() b.void public infoPrint()</P>
                  <P>  c.private void infoPrint() d.void private infoPrint()</P>
                  <P>  4) public方法不能够访问其它类的private数据。___________</P>
                  <P>  a.对 b.不对</P>
                  <P>  5) 外部类不能访问静态(static)变量。___________</P>
                  <P>  a.对 b.不对</P>
                  <P>  6) 外部类不能访问_________变量。</P>
                  <P>  a.static b.private c.public</P>
                  <P>  7) 私有变量允许________访问。</P>
                  <P>  a.任何类 b.特权类 c.定义这个变量的类</P>
                  <P>  8) 现有一个如下所示的类:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public class People 
{
private String name;
private String sex;
private String age;
}
</CODE></PRE></TD></TR></TBODY></TABLE>
                  <P>  请构建一个方法getName,使得其它类能够访问它的成员变量name:</P>
                  <P>  ____________________________________________________________________</P>
                  <P>  ____________________________________________________________________</P>
                  <P>  ____________________________________________________________________</P>
                  <P><B>  练习答案</B></P>
                  <P>  1)c Java语言中使用关键字private定义私有变量、方法。</P>
                  <P>  2)b Java语言中使用关键字static定义私有变量、方法。</P>
                  <P>  3)a 
                  c和d使用了private关键字,肯定不能被外部类访问,所以答案就在a和b之间。而b将void放在了public之前,不符合Java语言的语法规则。</P>
                  <P>  4)a private定义的数据不能够被外部类访问。</P>
                  <P>  5)b 静态变量是可以被外部类访问的。</P>
                  <P>  6)b 仅有私有变量是不能够被外部类访问的。</P>
                  <P>  7)c 私有变量只允许定义它的类访问,在Java中没有什么特权类。</P>
                  <P>  8)这个方法很简单:</P>
                  <TABLE cellSpacing=0 cellPadding=5 width="100%" 
                  bgColor=#cccccc border=1>
                    <TBODY>
                    <TR>
                      <TD><PRE><CODE>
public int getName() 
{
return name;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -