开发平台软件:Intellij IDEA 16
java语言开发
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个不同修辞符的方法,在本类内调用,结果全部能访问。 实验结论: 不管用什么修辞符修辞的成员方法,本类内的所有成员方法都能访问到。 * */
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 修辞的方法)。 * */
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 修辞的方法)是不能被访问的。 * */
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修辞的成员方法)才能被访问到。 * */
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修辞的成员方法)才能被调用到。 * */
step6:/*最后总结:1、在本类内声明的成员方法,不管用什么修辞符修辞,本类内都能访问到。 2、私有(即用private 修辞)的成员方法只有在本类内访问到。 3、共有(即用public修辞)的成员方法,在任务包名下的任何类内都能访问到。 4、受保护(即protected修辞)和默认(无修辞符)的成员方法,不能在其它包名下访问到。 */