【java】Java的继承,方法重写,访问权限

继承

**首先面向对象的三大特性:
1. 封装
2. 继承
3. 多态**

语法

      class Subclass extends Superclass{ }

作用

  1. 继承的出现提高了代码的复用性。
  2. 继承的出现让类与类之间产生了关系,提供了多态的前提。
  3. 不要仅为了获取其他类中某个功能而去继承

例子

class Person {
    String name;
    int age;
}

/*继承与Person类*/
class Student extends Person {
    int weight;
}
  • Student类继承了Person类,他拥有了Person类的所有成员变量
  • Student类拥有自己的一个成员变量
  • 如果Person类里里面的变量是private的,子类就不能直接访问了,只能通过get和set函数
  • Java中只有单继承,也就是一个子类只能继承一个父类

子类和父类构造器的调用

  1. 子类中所有的构造器默认都会访问父类中空参数的构造器
  2. 当父类中没有空参数的构造器时,子类的构造器必须通过this(参数列表)或者super(参数列表)语句指定调用本类或者父类中相应的构造器,且必须放在构造器的第一行
  3. 如果子类构造器中既未显式调用父类或本类的构造器,且父类中又没有无参的构造器,则编译出错
class Person {
    String name;
    int age;

    Person() {
        System.out.println("Person的构造器!");
    }
}

class Student extends Person {

    Student() {
        System.out.println("Student的构造器!");
    }

    int weight;
}

结果:

Person的构造器!
Student的构造器!

方法重写

要求

  1. 重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。
  2. 重写方法不能使用比被重写方法更严格的访问权限。
  3. 重写和被重写的方法须同时为static的,或同时为非static的
  4. 子类方法抛出的异常不能大于父类被重写方法的异常
class Person {
    String name;
    int age;

    public void say() {
        System.out.println("I am person!");
    }
}

class Student extends Person {
    int weight;

    public void say() {
        System.out.println("I am student!");//方法重写
    }
}

下面这个情况不是方法重写

class Person {
    String name;
    int age;

    public void say() {
        System.out.println("I am person!");
    }
}

class Student extends Person {
    int weight;

    private void say() {
        System.out.println("I am student!");//不是方法重写
    }
}

访问权限

这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值