Java后端开发(面向对象的三大特征)Day06

封装、继承、多态

一、封装

生活中的封装:包装盒、机箱

代码中的封装:类、方法、包

好处:

  1. 提高了复用性

  2. 隐藏了实现细节

  3. 提高了安全性

问题:只要对属性的赋值在指定类型的范围内,程序就能正常运行,但是数据却是不合理的

原因:没有对数据进行合理性的判断

通过对属性的封装来解决该问题,解决步骤:

  1. 使用关键字private来修饰属性,

    private用来修饰成员,被private修改的成员只能在本类中访问

  2. 对外提供这个私有属性的访问方法:get/set

    // set
    public void setAge(int age){
        if(age >= 0 && age <= 120){
            this.age = age;
        }
    }
    ​
    // get
    public int getAge(){
        return this.age;
    }

注:

  1. 如果被封装的属性是布尔类型:get/set一般会写成is/set

  2. JavaBean的标准定义:

    1. 无参构造函数

    2. 私有化的属性

    3. 私有属性对外提供的set/get方法

二、继承

2.1、概念

继承让类与类之间产生了联系,称为子类继承父类

好处:

  1. 提高了代码的复用性

  2. 为多态提供了前提

注:

  1. 继承关系中的父类(superclass)也叫超类、基类;子类(subclass)也叫派生类、衍生类

  2. Object类是所有类的父类,任何类都直接或者间接的继承了Object

  3. 父类的范围比子类大,但是属性和方法比子类少,子类除了有父类中的共性内容外,还可以有特性内容

  4. 一个子类就是一个父类

2.2、继承关系

关键字:extends

public class 父类{
 
}
​
public class 子类 extends 父类{
 
}

注:

  1. 子类可以继承父类中的所有非私有成员

  2. 一个父类可以有多个子类

  3. 一个子类只能有一个父类,类与类之间只存在单继承

  4. 类与类之间存在多层继承

2.3、继承关系中成员的同名问题

同名成员变量:根据就近原则优先访问子类中

同名成员方法:根据就近原则优先访问子类中

方法的重写(override):在继承关系中,子类方法的方法名与父类方法的方法名相同,且参数列表也相同称为方法的重写,可以用注解@Override来检验是否是重写

方法重写的意义:扩展子类功能

1. 子类重写父类方法的范围修饰符要大于等于父类的
2. 子类重写父类方法的返回类型必须是父类方法的返回类型或者该类型的子类

2.4、父类属性私有化的问题

子类的共性属性抽取到父类中,父类作为一个JavaBean,其中的属性都是私有的,那么子类无法方法。

子类可以通过父类中私有属性对外提供的set/get方法来访问这些私有属性

如何在创建子类对象的同时,为子类的共性属性进行初始化?

// 在子类的重载构造函数中调用父类的重载构造函数
public Programmer(String id, String name, int age, double salary){
 super(id,name,age,salary);
}

此时如果还需要为子类的特性属性进行初始化,可以添加重载构造函数

private double money;
​
public Programmer(String id, String name, int age, double salary,double money){
 super(id,name,age,salary);
 this.money = money;
}

2.5、关键字this、super

this可以访问:

  1. 本类的成员变量

  2. 本类的成员方法

  3. 本类构造函数

    this(参数);

    注:调用本类构造函数的语句必须是构造函数中的第一条语句

super可以访问:

  1. 父类的成员变量

  2. 父类的成员方法

  3. 父类的构造函数

    注:每一个类的每一个构造函数中的第一行都默认调用了父类的无参构造函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你知道 吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值