| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 33876 人关注过本帖, 7 人收藏
标题:[原创]课堂笔记学习java(初级)
只看楼主 加入收藏
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 

这贴子真不错...有用,好东西呀


我在说's blog   http://www..cn
2006-10-12 23:32
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
收藏
得分:0 

这种贴不支持就真的不太像话了


我在说's blog   http://www..cn
2006-10-13 11:59
yangte
Rank: 1
等 级:新手上路
帖 子:163
专家分:0
注 册:2006-10-2
收藏
得分:0 
楼主,你真是好心人啊,,
这世上难碰到啊,,支持,发下去。

2006-10-13 19:27
dgtggss
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-14
收藏
得分:0 

这种态度学JAVA基本就无敌了~楼主这种积极的精神更促使我努力学习JAVA,

2006-10-14 20:25
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

第五节课

继承与访问权限

继承的概念:
继承是一种由己有的类创建新类的机制.利用继承,可以先创建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行为.由继承而得到的类称为子类,被继承的类称为父亲.java不支持多重继承,即子类只能有一个父亲(有别于C++的语法).

子类:
在类的声明中,通过使用关键字extends来声明一个类的子类,格式为:
class 子类名 extends 父类名
{
//...
}

注:如果一个类声明中没有使用extends关键字,这个类被系统默认为是Object的直接子类,Object是java.lang包中的类

子类的继承性
所谓子类的继承父类的成员变量作为自己的一个成员变量,就好像它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作,也就是说,一个子类继承的成员应当是这个类的完全意义的成员,如果子类中声明的实例方法不能操作父类的某个成员变量,该成员变量就没有被子类继承;所谓子类继承父类的方法作为子类中的一个方法,就象它们在子类中直接声明一样,可以被子类中自己声明的任何实例方法调用.

1) 子类和父类在同一包中的继承性
如果子类和父类在同一包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并自然地继承了其父类中不是private的成员方法作为自己的成员方法,继承的成员的访问权限保持不变. 例如:

class Father 
{ private int money;
float weight,height;
String head;
void speak(String s)
{ System.out.println(s);
}
}
class Son extends Father
{ String hand,foot;
}
public class Example4_15
{ public static void main(String args[])
{ Son boy;
boy=new Son();
boy.weight=1.80f;
boy.height=120f;
boy.head=\"一个头\";
boy.hand=\"两只手 \";
boy.foot=\"两只脚\";
boy.speak(\"我是儿子\");
System.out.println(boy.hand+boy.foot+boy.head+boy.weight+boy.height);
}
}

2)子类和父类不在同一个包中的继承性
如果子类和父类不在同一个包中,那么,子类继承了父亲的protected,public成员变量和成员方法作为子类的成员变量和方法,继承的成员或方法的访问权限保持不变.如果子类和父类和父类不在同一包中,子类不能继承父类的友好变量和友好方法.


上面提到的private,protected,public以及友好(friendly)等字眼就是访问权限,下面来讲解一下他们具体的意义


当一个类创建了一个对象之后,该对象可以通过"."运算符操作自己的变量,使用类中的方法,但对象操作自己变量和使用类中的方法是有一定限制的.所谓访问权限是指对象是否可以通过"."运算符作自己的变量或使用类中的方法.访问权限的修饰符有private,protected和public,都些都是java中的关键字,还有就是友好(friendly)但它不是关键字只是种默认时的权限.访问权限由高到低:public->protected->friendly->private
具体分析如下:

关键字private修饰的成员变量和方法称为私有变量和方法.如

class room
{private float weight;
private float f(float a,float b){//....}
}

当在另外一个类中用类Tom创建一个对象后,该对象不能访问自己的私有变量和私有方法.如
class jerry
{void g()
{Tom cat=new Tom;
cat.weight=23f;//错误,因为weight被私有修饰,不可一被对象访问
cat.f(3f,4f);//错误,f()被private修饰,不能被使用
}
}

对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法.如


class Example4_14//所有代码都包含在一个类中
{ private int money;
Example4_14()
{ money=2000;
}
private int getMoney()
{ return money;
}
public static void main(String args[])
{ Example4_14 exa=new Example4_14();
exa.money=3000;
int m=exa.getMoney();
System.out.println(\"money=\"+m);
}
}

当然如果类中只有变量是私有的,而能操作此变量的函数是共有的,就可以间接对此私有变量进行操作,如


class room
{private float weight;
float f(float weight){this.weight=weight;}//都在一个类中方法可以访问变量
}

class jerry
{void g()
{Tom cat=new Tom;
cat.f(23f);//正确,f()没有被private修饰可以访问,这样就间接的操作了weight,相当于cat.weight=23f;
}
}


公有关键字public顾名思义,是访问权限最大的了,只要被它修饰无论在哪里都可以访问到

class room
{public float weight;
public float f(float a,float b){//....}
}

class jerry
{void g()
{Tom cat=new Tom;
cat.weight=23f;//正确
cat.f(3f,4f);//正确
}
}

友好(friendly)的概念,即不被private,protected,public修饰的成员变量和方法被称为友好变量和友好方法,如.

class room
{float weight;//友好变量
float f(float a,float b){//....}//友好方法
}

当在另一个类中用类Tom创建了一个对象后,如果这个类与Tom类在同一个包中,那么该对象能访问自己的友好变量和友好方法.在任何一个与Tom同一个包中的类,也可以通过Tom类的类名访问Tom类的类友好成员变量和类友好方法.
假如jerry和Tom是同一个包中的类,那么下述jerry类中的cat.weight.cat.f(3,4)都是合法的

class jerry
{void g()
{Tom cat=new Tom;
cat.weight=23f;//正确
cat.f(3f,4f);//正确
}
}

受保护关键字protected的用法只有在继承中才能体现出来,就是为什么先把继承引出来的原因,可以看看上面继承时说的子类和父类不在同一包中时,只有public和protected修饰的变量和方法才可以被继承使用.除了在继承这点的区别,在同一包中时,用法和作用和友好是一摸一样的,注意体会一下.

来全面总结一下protected的用法:
一个类A中的protected成员变量和方法可以被它的直接子类和间接子类继承,比如B是A的子类,C是B的子类,D又是C的子类,那么B,C,D类都继承了A的protected的成员变量和方法.如果用D类在D本身创建了一个对象,那么该对象总是可以通过"."运算符访问继承的或者自己定义的protected变量和方法,但是,如果在另一个类中,比如Other类,用D类创建了一个对象object,该对象通过"."运算符访问protected变量和方法的权限如下所述:

1)子类D中亲自声明的protected成员变量和方法,不可能是从别的类继承来的,object访问这些非继承的protected成员变量和方法时,只要other类和D类在同一包中就可以了.

2)如果子类D的对象的protected成员变量或方法是从父类继承来的,那么就要一直追追述到该protected成员变量或方法的"祖先"类,即最先头的父类A,如果Other类和A类在同一包中,object对象能访问继承的protected变量或protected方法.


访问权限不只能修饰变量和成员还是可以修饰类的,但protected和private不可以
类声明时,如果关键字class前面加上public关键字,就称这样的类是一个public类,如

public class A
{//...}

可以在任何另外一个类中,使用public类创建对象.如果一个类不加public修饰,如

class A
{//...}
这样的类称为友好类,那么另外一个类中使用友好类创建对象时,要保证它们是在同一个包中

特别注意:不能用protected和private修饰类

总结:简单的引入了继承和访问权限的概念,重在体会,为下次课学习多态,抽象类以及接口打下基础.


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-15 11:18
paohui01
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-8-19
收藏
得分:0 
哈 LZ更新了哈 上去

2006-10-16 19:21
iori1998
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-5-7
收藏
得分:0 
我也正在學習,課件比我學校老師的好多了.不好意思,我也轉到我空間里頭去了.
還有一句,希望摟主繼續.THANKS.
2006-10-17 18:36
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 
楼主真的很细心 我也在学核心java 但进度好象快一些
拿出自己笔记和楼主一比 真的欠缺了很多 再此多谢楼主的帖子了;
2006-10-18 13:12
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 
以下是引用maorenqi101在2006-10-12 20:01:22的发言:
用jcreator开发工具要配置环境变量吗?
谢谢

需要在环境变量中配置jdk

2006-10-18 13:14
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 
以下是引用似水在2006-10-12 15:56:56的发言:
import java.applet.*;
import java.awt.*;
public class Boy extends Applet //entends代表Boy继承了小应用程序Applet类
{
public void paint(Graphics g)
{ g.setColor(Color.red);
g.drawString("我一边喝着咖啡,一边学Java呢",5,30);
g.setColor(Color.blue);
g.drawString("我学得很认真",10,50);
}
}

我是初学者,请问我在编译这段代码时,提示:
boy.java:3:类Boy是公共的,应在名为Boy.java的文件中声明
public class Boy extends Applet//entends代表Boy继承了小应用程序Applet类

请各位大虾帮忙解释查找一下是什么问题,谢谢!

文件名该和类名相同

2006-10-18 13:16
快速回复:[原创]课堂笔记学习java(初级)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028216 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved