成员方法的修辞符及其被访问权限
1、step1:新建包 本例包名【package myFiles_012】,接着在该包内添加1个类,本例类名:public class fatherDemo1 {}内容如下:
package myFiles_012;
/**
* 探究:修辞符的访问权限
* 条件: 本类内有4个不同修辞符的方法
*/
public class fatherDemo1 {
//用private修辞的方法
private void show1() {
System.out.println("this is private void show1()");
}
//用默读修辞的方法
void show2() {
System.out.println("this is void show2()");
}
//用protected修辞的方法
protected void show3() {
System.out.println("this is protected void show3()");
}
//用public 修辞的方法
public void show4() {
System.out.println("this is public void show4()");
}
public static void main(String[] args) {
fatherDemo1 mydemo = new fatherDemo1();
mydemo.show1();
mydemo.show2();
mydemo.show3();
mydemo.show4();
}
}
/*运行结果:
this is private void show1()
this is void show2()
this is protected void show3()
this is public void show4()
实验记录:
在本类内声明4个不同修辞符的方法,在本类内调用,结果全部能访问。
实验结论:
不管用什么修辞符修辞的成员方法,本类内的所有成员方法都能访问到。
*
*/
2、step2:在包名【package myFiles_012】下再添加1个类,本例类名:public class sonDemo1{ } ,将它继承fatherDemo1 内容如下:
package myFiles_012;
/**
* 本类sonDemo1,继承于fatherDemo1 这两个类是同包的
* 探究:子类访问父类方法的权限
*/
public class sonDemo1 extends fatherDemo1 {
public static void main(String[] args) {
fatherDemo1 yy = new fatherDemo1();
//yy.show1();
yy.show2();
yy.show3();
yy.show4();
}
}
/*运行结果:
this is void show2()
this is protected void show3()
this is public void show4()
实验记录:
在同一包名下,子类去调用父类的成员方法,父类中的private修辞的成员方法是无法访问的。
实验结论:
同包内,子类不能访问父类的私有成员方法(即用private 修辞的方法)。
*
*/
3、step3:在包名【package myFiles_012】下再添加1个类,本例类名:public class sonDemo2 { } , 内容如下:
package myFiles_012;
/**
* 本类sonDemo2,与fatherDemo1无继承关系 这两个类是同包的
* 探究:sonDemo2类访问fatherDemo1方法的权限
*/
public class sonDemo2 {
public static void main(String[] args) {
fatherDemo1 my = new fatherDemo1();
// my.show1();
my.show2();
my.show3();
my.show4();
}
}
/*运行结果:
this is void show2()
this is protected void show3()
this is public void show4()
实验记录:
在同一包名下,A类去调用B类的成员方法,B类中的private修辞的成员方法是无法访问的。
实验结论:
同包内,被调用的类中私有成员方法(即用private 修辞的方法)是不能被访问的。
*
*/
4、step4:新建包 本例包名【package myFiles_013】,接着在该包内添加1个类,本例类名:public class mysonDemo2 {} 将它继承fatherDemo1.内容如下:
package myFiles_013;
import myFiles_012.fatherDemo1;
/**
* 本类mysonDemo1 继承于不同包名下的fatherDemo1
*/
public class mysonDemo2 extends fatherDemo1 {
public static void main(String[] args) {
fatherDemo1 you = new fatherDemo1();
/* you.show1();
you.show2();
you.show3();*/
you.show4();
}
}
/*运行结果:
this is public void show4()
实验记录:
在不同包名下,子类去调用父类的成员方法,父类中只有公有的方法(即用public修辞的成员方法)才能被访问到。
实验结论:
在不同包名下,子类去调用父类的成员方法,父类中只有公有的方法(即用public修辞的成员方法)才能被访问到。
*
*/
5、step5:在包名【package myFiles_013】下再添加1个类,本例类名:public class mysonDemo1 { } , 内容如下:
package myFiles_013;
import myFiles_012.fatherDemo1;
/**
* 本类mysonDemo1与fatherDemo1不同包,不存在继承关系
* 探究:在这种情况下的访问权限
*/
public class mysonDemo1 {
//在本类内调用fatherDemo1中的成员方法
public static void main(String[] args) {
fatherDemo1 pig = new fatherDemo1();
/*pig.show1();
pig.show2();
pig.show3();*/
pig.show4();
}
}
/*运行结果:
this is public void show4()
实验记录:
在不同包名下,A类去调用B类的成员方法,B类中只有公有的方法(即用public修辞的成员方法)才能被访问到。
实验结论:
在不同包名下,被访问类中只有公有的方法(即用public修辞的成员方法)才能被调用到。
*
*/
6、step6:
/*最后总结:
1、在本类内声明的成员方法,不管用什么修辞符修辞,本类内都能访问到。
2、私有(即用private 修辞)的成员方法只有在本类内访问到。
3、共有(即用public修辞)的成员方法,在任务包名下的任何类内都能访问到。
4、受保护(即protected修辞)和默认(无修辞符)的成员方法,不能在其它包名下访问到。
*/