疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中类之间的继承和访问权限


 

   java中类之间的继承和访问权限

  package baseDemo1;

  /**

  * 类之间的继承和访问

  * */

  public class Demo1 {

  public void method1() {

  }

  protected void method2(){

  }

  void method3(){

  }

  private void method4(){

  }

  public static void main(String[] args){

  /**

  * Demo1访问同一个package中的类Demo5。

  * Demo5不是public类

  * 结论:类的修饰符public是针对不同包之间的访问

  * 类修饰符,对本包之间的类访问,没有影响

  * */

  Demo5 d5 = new Demo5();

  d5.method1(); //public OK

  d5.method2(); //protected OK

  d5.method3(); //default OK

  //d5.method4(); //private Error

  /**

  * 访问不同package中的类Demo2

  * 结论:只能访问不同package中的public类中的public成员

  */

  baseDemo2.Demo2 d2 = new baseDemo2.Demo2();

  d2.fun1(); //public OK

  //d2.fun2(); //protected Error

  //d2.fun3(); //default Error

  //d2.fun4(); //private Error

  /**

  * Demo3继承同一个package中的类Demo1

  * 同一个package中类的继承: 子类能继承父类除了private之外的所有成员

  * */

  Demo3 d3 = new Demo3();

  d3.method1(); //public OK

  d3.method2(); //protected OK

  d3.method3(); //default OK

  //d3.method4(); //private Error

  /**

  * Demo4继承不同的package中的类Demo2

  * 不同package中,类的继承: 子类只能继承父类的public成员

  * */

  Demo4 d4 = new Demo4();

  d4.fun1(); //public OK

  //d4.fun2(); //protected Error

  //d2.fun3(); //default Error

  //d2.fun4(); //private Error

  }

  }

  /**

  * Demo3继承同一个package中的类Demo1

  * */

  class Demo3 extends Demo1{

  }

  /**

  * Demo4继承不同的package中的类Demo2

  * */

  class Demo4 extends baseDemo2.Demo2{

  }

  class Demo5{

  public void method1() {

  }

  protected void method2(){

  }

  void method3(){

  }

  private void method4(){

  }

  }

  [java] view plaincopy

  package baseDemo2;

  public class Demo2 {

  public void fun1(){

  }

  protected void fun2(){

  }

  void fun3(){

  }

  private void fun4(){

  }

  }