课本P73 T9
class Src {
public int aN=3;
public Src(int aa){
if (aa>=0){
aN=aa;}
}
}
class Dis{
Src s;
public Dis(Src ss){
this.s=ss;
}
public void changeSrc(int b){
if (b<0){
System.out.println("不为非负");
}
else if (b==s.aN){
}
else{
s.aN=b;
System.out.println(s.aN);
}
}
}
public class RunD_C{
public static void main(String args[]){
Src src=new Src(6);
Dis dis=new Dis(src);
dis.changeSrc(5);
}
}
Java的访问控制修饰符有:
public:接口访问权限
protected:包访问权限,继承访问权限
默认:包访问权限
private:无法直接访问
权限对应下图
public class edit0502 {
public static void main(String args[]){
FighterPlane fp= new FighterPlane();
System.out.println(fp.name0);
System.out.println(fp.name1);
System.out.println(fp.name2);
//System.out.println(fp.name3);
fp.test1();
fp.test2();
fp.test3();
//fp.test4();
}
}
class Plane
{
String name0="n0";
public String name1="n1";
protected String name2="n2";
private String name3="n4";
void test1(){
System.out.println("we can see default void ");
}
public void test2(){
System.out.println("we can see public void ");
}
protected void test3(){
System.out.println("we can see protected void ");
}
private void test4(){
System.out.println("we can see private void ");
}
}
class FighterPlane extends Plane
{
public int a=0;
}
以下为输出结果:
n0
n1
n2
we can see default void
we can see public void
we can see protected void
斜杠注释掉的部分不能通过编译,所以public,protect,默认都是可见的。
组合:拥有“高内聚,松耦合”的特点。组合通过对象内部的属性引用来实现。组合会使对象之间的耦合性较为松散。
说实话,可能会用,但我不是很清楚概念,课本案例主要是强调对象之间的沟通。类A的对象a中有个可以控制类FighterPlane对象ftp的引用,从而通过a向ftp发消息。
重载方法:在类中定义了多个同名而不同内容参数的成员方法。
作用:对于能进行消息处理的接口方法,又是即需要对其功能进行服用,同时有需要对其进行扩充时,重载能满足要求。
很多统计函数包里面可以为了不同目的输入不同数量的参数,就是用了重载方法。
课本例5.8
覆盖:子类对父类参数相同,返回类型相同的同名方法重现进行定义。
作用:方法覆盖与引用替换结合,可是抽象类的生命在保证消息发送统一性的前提下,具有消息结果执行上的相异性特点。(课本内容,我还不是和理解,有点像旧方法弃之不用了)
课本例5.9