java中继承简单介绍

继承

继承的概念

生活中的继承:子女拥有父母的东西

代码块中继承:类与类之间产生了关系,子类可以直接访问父类中的成员

父类是子类共性内容向上抽取形成的,子类中除了有父类的共性内容之外还可以特有内容

父类:superclass,超类、基类

子类:subclass,派生类、衍生类

注:

  1. 一般来说,父类的范围更大,属性和方法较少;子类的范围更小,属性和方法更多
  2. java中有一个类Object,它是所有类的父类(任何一个类都直接或者间接的继承了Object)
  3. 一个子类就是一个父类

好处:

  1. 提高了代码的复用性
  2. 为多态提供了前提
父类和子类的定义

关键字:extends

格式:

public class 父类{
 
}

public class 子类 extends 父类{
 
}

注:

  1. 一个子类只能有一个父类
  2. 一个父类可以有多个子类
  3. 继承具有传递性
  4. 不能循环继承
子父类中成员的同名成员的问题
同名变量

子父类中存在同名的成员变量时,子类对象优先访问子类中的。就近原则

如果要访问父类中的同名成员变量,需要在子类中通过关键字super进行访问

同名方法

子父类中存在同名的成员方法时,子类对象优先访问子类中的。就近原则

如果要访问父类中的同名成员方法,需要在子类中通过关键字super进行访问

方法的重写:在继承关系中,子类方法与父类方法的方法名、参数列表都相同

重写的作用:扩展父类功能

注:

  1. 注解@Override可以用于校验是否是重写

  2. 子类重写父类方法的范围修饰符必须大于等于父类范围修饰符

    范围修饰符的大小范围:public > protected > [default] > private

  3. 子类重写父类方法的返回类型必须是父类方法的返回类型或者该类的子类

父类属性私有化的问题

子类的共性属性抽取到父类中,父类属性私有化了,子类不能直接访问,可以通过父类对外提供的这些私有属性的set/get方法进行访问。

如何使用构造函数的重载,在创建子类对象时,对子类的属性进行初始化?

步骤:

  1. 重载父类构造函数
  2. 在子类的重载构造函数中调用父类的重载构造函数
public class Employee {
    private String name;
    private int age;
    private double salary;
    private String sex;

    public Employee() {
    }

    public Employee(String name, int age, double salary, String sex) {
        this.name = name;
        this.age = age;
        this.salary = salary;
        this.sex = sex;
    }
    
    // set/get方法
}
public class Programmer extends Employee {
    public Programmer() {
    }

    public Programmer(String name,int age,double salary ,String sex){
        super(name, age, salary, sex);
    }

}

子类中有特有属性的情况:

public class Employee {
 private String name;
 private int age;
 private double salary;
 private String sex;

 public Employee() {
 }

 public Employee(String name, int age, double salary, String sex) {
     this.name = name;
     this.age = age;
     this.salary = salary;
     this.sex = sex;
 }
 
 // set/get方法
}
public class Manager extends Employee{

 private double bonus;

 public Manager() {
 }

 public Manager(String name, int age, double salary, String sex){
     super(name, age, salary, sex);
 }

 public Manager(String name, int age, double salary, String sex,double bonus){
     super(name, age, salary, sex);
     this.bonus = bonus;
 }
 
 // set/get方法
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值