第二章 : 三大特性之封装、继承

前言:因为有了封装,才有了继承!因为有了继承,才有了多态!

封装、继承

一:数据类型的默认值

  • 基本数据类型的默认值:
    byte : 0 、short:0 、int :0 、long : 0L 、 char : \0 、double:0.0 、 boolean: false;
  • 引用数据类型:
    String :null 对象: null;

二:包

  1. 包的作用是区分同名类
  2. 包的命名规范是:所在公司域名的反写格式 + 项目名 + 组名 + 模块名,一般都是小写格式
  3. 包必须放在一个类的第一句,注释文本除外。
  4. 包的引入:使用package关键字
package com.zelin.test;

import com.zelin.pojo.Person;
import java.util.Scanner;
public class TestPack {

}

三:import关键字引入包中的类

  1. import关键字作用是引入一个包中的类。
  2. 格式:import + 完整的包名 + 类名。
  3. 如果需要引入一个包中多个类,那么可以使用import + 完整的包名 + *格式引入所有当前正在使用得类。这个方法不会增加正在编译的文件的大小,也不会影响程序的运行速度,但是会影响编译的速度
import com.zelin.pojo.Person;
import java.util.Scanner;
import java.util.*;

四:三大特性之-----封装

  1. 封装的概念:其实就是为了隐藏类中具体的实现细节,将方法或者属性设置为private私有化,并对外界提供公共的访问的方法。这样我们就保证了类中具体结构的安全,暴露简单的方法
public class Packaging {
    private int age;
    private String name;
    private String sex;
    }
  1. 封装后类的属性和方法一般会对外提供setter和getter方法,方便外界访问封装后的属性和方法,setter是写入方法,getter是读出方法。没有规定必须都要定义定义完全这两个方法
public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //我们对此age字段进行了封装,那么创建对象是,调用构造方法赋值,
        //如果不调用此字段的封装判断,那么将无意义,直接将变量赋值给成员变量
        if(age <0 && age > 120){
            System.out.println("老妖怪");
        }else
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
  1. 当我们对字段进行了封装,即对setter方法进行了判断的封装后,我们需要在构造方法中使用对应的set方法进行赋值才能调用到这个封装后的字段,此时的字段才是有效的
public Packaging(int age, String name, String sex) {
//        this.age = age;
        //需要在构造函数中对对应的set方法赋值
        this.setAge(age);
        this.name = name;
        this.sex = sex;
    }
    public void setAge(int age) {
        //我们对此age字段进行了封装,那么创建对象是,调用构造方法赋值,如果不调用此字段的封装判断,那么将无意义,直接将变量赋值给成员变量
        if(age <0 && age > 120){
            System.out.println("老妖怪");
        }else
        this.age = age;
    }

五:访问权限修饰符

  1. java中共有四种访问权限修饰符:public(公有的)、protected(受保护的)、default(默认)、private(私有的)。
  2. public(公有的): 可以在任何地方访问,具有最高的访问权限。即:任何位置有效
  3. protected(受保护的):代表只能在父子类的继承关系中存在,即只要是父子类继承的关系,哪怕不在同一个包中也能使用这个修饰符修饰的属性和方法。即:父子类有效+同一个包下有效
  4. default(默认权限):代表只能在同一个包内有效,即:包内有效
  5. private(私有的):只能在本类中能够访问,即:同一个类中有效
  6. 权限由高到低排序:public > protected > default > private
  7. 我们总结了如下图解:
    在这里插入图片描述

六:三大特性之-----继承

  1. 继承:就是两个类之间的一种关系。我们称之为父子类。继承的关键字是extends
  2. 所有的类都默认继承了Objet类,Object也称为超类。父类也叫:基类
  3. 在java中是单继承的,一个类只能同时继承一个父类,但是可以多实现
  4. 子类不能继承父类的private私有属性和方法,只能通过父类对外提供的方法setter和getter进行访问私有属性
  5. 子类不能继承被final修饰的类,也不能重写父类被final修饰的方法。但是子类可以继承父类final修饰的变量和方法
  6. 子类继承父类必须要调用父类的构造方法,一般的,如果我们不主动super调用父类的构造方法,那么JVM会隐式调用父类空参构造方法。但是如果父类没有无参构造方法,那么子类不手动调用父类有参构造方法的话就会报错
  7. super调用的父类构造方法必须放在第一行,不能同时调用两个父类的构造方法
  8. 如果子类需要调用父类被重写的方法,可以使用super.方法名来调用父类的被重写的方法
  9. 继承是为了提高代码的复用性
public class Teacher extends Packaging {
    //1.1) 定义教师的特有属性
    private double salasy;

    //1.2) 构造方法
    public Teacher() {
    }

    //1.3) 构造特有属性的构造方法
    public Teacher(double salasy) {
        this.salasy = salasy;
    }

    //1.4) 构造所有父类属性和子类属性的构造方法
    public Teacher(int age, String name, String sex, double salasy) {
        //super关键字:代表父类,下面代表引用对应三个属性的构造方法
        //super必须放下第一行,且只能有一个,且子类继承父类就必须至少调用父类的构造方法
        super(age, name, sex);
        this.salasy = salasy;
    }

    public double getSalasy() {
        return salasy;
    }

    public void setSalasy(double salasy) {
        this.salasy = salasy;
    }
}

七:super关键字

  1. super关键字:指父类的实例,值向的是父类的方法、属性、构造函数
  2. super(参数列表)指父类的构造方法,必需放在第一行。子类必需要调用父类的构造方法
  3. super.方法名可以在子类调用父类被重写的方法
  4. super关键字是两个类之间实际上的联系纽带。extends关键字只是提示作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值