8、继承和限制控制

一 继承和权限控制

1.1 继承

Java中使用extends关键字实现类的继承机制,其语法格式为:

 

<modifier> class <name> [extends <superclass>] {}

通过继承,子类自动拥有了基类(superclass)的所有成员变量和方法

 

  • Java只支持单继承,不允许多继承
    • 一个子类只能有一个基类,一个基类可以派生出多个子类

 

如下面一段代码

class Parent {
     private int n_private = 1;
     int n_friendly = 2;
     protected int n_protected = 3;
     public int n_public = 4;
}

class Child extends Parent {          //继承父类Parent
     public void f() {
          n_private = 10;          //直接使用父类成员
          n_friendly = 20;          //直接使用父类成员
          n_protected = 30;          //直接使用父类成员
          n_public = 40;            //直接使用父类成员
     }
}

其内存结构如下所示:

在堆空间中有一个对象Child,Child继承了Parent所有的成员(成员变量和方法)

 

 

编写程序:

写一个程序,包含三个类,第一个类为"人",其属性有名字,年龄;在这个类里面可以设置名字和年龄,也可以获取名字和年龄;第二个类为"学生",继承"人"这个类,学生属性有学校,可以设置学校也获取学校;第三个类为主类,验证上述的内容

class Person {
     private String name;
     private int age;

     public void setName(String name) {
          this.name = name;
     }

     public void setAge(int age) {
          this.age = age;
     }

     public String getName() {
          return name;
     }

     public int getAge() {
          return age;
     }
}

class Students extends Person {
     private String school;

     public void setSchool(String school) {
          this.school = school;
     }

     public String getSchool() {
          return school;
     }
}


public class TestPerson {
     public static void main(String[] args) {
          Students student = new Students();
          student.setName("John");
          student.setAge(18);
          student.setSchool("SCH");

          System.out.println(student.getName());
          System.out.println(student.getAge());
          System.out.println(student.getSchool());
     }
}

 

 

1.1.1 小结

  • 通过继承可以简化类的定义,实现代码的重用
  • 子类继承父类的成员变量和成员方法,但不继承父类的构造方法
  • java中只有单继承,没有像c++那样的多继承。多进程会引起混乱,使得继承链过于复杂,系统难于维护。多继承就是为了实现代码的复用性,却引入了复杂性,使得系统类的关系混乱
  • java中的多继承,可以通过接口来实现
  • 如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object

 

 

1.2 访问控制

Java权限修饰符public  protected  private置于类的成员定义前,用来限定其他对象对该类对象成员的访问权限。

如下所示,是访问权限列表

  • te:只能在同一个类内部使用,就算其他类继承了该类,也无法使用
  • default:类内部和同一个包内可以使用,在子类中也无法使用。默认权限,关键字default无需写
  • protected:在类内部、同一个包内、子类里面可以访问使用
  • public:在任何地方都可以使用

 

 

对于class的权限修改时只可以用public和default

  • public类可以在任意地方被访问
  • default类只可以被同一个包内部的类访问

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值