一起重新开始学大数据-java篇-DAY14-继承、方法重写、包、权限修饰符、状态修饰符

DAY14-继承、方法重写、包、权限修饰符、状态修饰符

在这里插入图片描述

继承:(面向对象三大基本特征之一)

概述:

两个类中有相同的成员变量和成员方法(相同特征)
继承是面向对象的三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法

格式:

public class 子类名 extend 父类名{

父类又称为基类超类
子类又被称为派生类

特点

子类可以有父类的内容
子类也可以有自己特有的内容

继承的好处和弊端

好处

提高了代码的复用性(多个类相同的成员可以放在同一个类中)
提高了代码的维护性(如果方法代码需要修改,修改一个类即可)

弊端

继承类与类之间产生了关系,增强了类的耦合性,父类改变时,子类不得不发生改变,降低了子类的独立性

什么时候使用继承:

继承的的关系: is a(什么是什么的一种)

例如:

苹果是水果的一种,可以的水果设计为父类,苹果设计为子类

继承中变量访问特点:

在子类中访问一个变量
1.在子类局部范围查找
2.子类成员范围查找
3.父类成员范围查找
4.都找不到就报错(这里不考虑父类的父类)

this:当前类的对象

super:当前类父类的对象

关键字访问成员变量访问成员方法访问构造
thisthis.成员变量this.成员方法(…)this(…)
supersuper.成员变量super.成员方法(…)super(…)

继承中构造的访问特点

子类中所有的构造都会默认先调用父类的无参构造

为什么?
在这里插入图片描述

因为子类会继承父类中的数据,可能还会使用父类中的数据,所以子类初始化之前,一定先初始化父类
每个子类构造方法中默认第一条语句都是super();

如果父类中没有无参构造,只有有参构造怎么办?

通过super关键字调用父类有参构造

在父类中手动添加无参构造

注意:在使用有参构造时,把无参构造加上肯定没问题
在这里插入图片描述


方法重写:

概述:

子类中出现和父类中一模一样的方法声明

应用:

当子类需要父类的功能时,而子类有自己特定的内容,可以重写父类 中的方法,这样,即使用了父类的功能,也是实现了子类特有的内容

方法重写为了区别子类中的方法是否实现了方法重写,Java提供了@Override来进行区分

@Override:
注解:
帮助区分子类中方法是否方法重写
在这里插入图片描述
特点:

1.继承 不同类
2.方法相同(方法名,参数,返回值)

注意:

1.private修饰的方法不能被重写

2.子类中的方法权限访问修饰符,不能被父类低

继承中注意事项:

  • 1.不支持多继承,只能单继承
  • 2.支持多层继承
  • 3.private修饰的不能被继承
  • 4.构造不能被继承,只能被使用

概述:

本质就是文件夹

对类进行分类管理

作用:

使用格式

格式:package 包名;(多级包使用.分割)

范例:package com.shujia;

注意:

包的路径从src下第一级目录开始到当前类的所在目录

导包
概述和使用:

使用不同包下的类,要写类的全路径,太繁琐,为了方便操作,Java提供了导包的功能

导包格式

格式:import 包名.类名;(多级包使用.分割)

范例:import java.util.Scanner;
注意:

包的路径从src下第一级目录开始到当前类的名称;
只能在同一个项目下


权限修饰符

修饰符同一个类中同包不同包,子类不同包,非子类
public
protected
default
private

举个例子
在这里插入图片描述

package Day14.demo10;

public class Person {
    public int age=20;
    protected int age1=18;
    int age2=25;
    // 同类
    public void show(){
        System.out.println(age);//同类public可用
        System.out.println(age1);//同类 protected可用
        System.out.println(age2);//同类default 可用
    }
}

package Day14.demo10;

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        // 同包
        System.out.println(person.age);//同包public可用
        System.out.println(person.age1);//同包 protected可用
        System.out.println(person.age2);//同包default 可用
    }
}

package Day14.demo11;


import Day14.demo10.Person;

public class Student extends Person {
    // 不同包子类
    public void show(){
        System.out.println(age);//不同包 子类 public可用
        System.out.println(age1);//不同包 子类 protected可用
//        System.out.println(age2);
    }
}

package Day14.demo11;

import Day14.demo10.Person;
// public       同类 同包 不同包子类 不同包非子类      都可以用
// protected    同类 同包 不同包子类                   都可以用
// default      同类 同包                              都可以用
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        // 不同包非子类
        System.out.println(person.age);// 不同包 非子类 public可用
//        System.out.println(person.age1);
//        System.out.println(person.age2);
    }
}

▶▶▶状态修饰符最常用的还是public,private


状态修饰符

final(最终态):

可以修饰成员变量,成员方法,类

特点:

修饰变量:该变量的值,不能被修改,必须初始化
在这里插入图片描述
在这里插入图片描述

修饰方法:该方法可以被重载,不能被重写
在这里插入图片描述
在这里插入图片描述

修饰类:该类,不能被继承
在这里插入图片描述

注意:修饰引用数据类型时,是地址值不能改变,地址所标识空间中的内容可以改变
在这里插入图片描述
在这里插入图片描述

总结:final修饰不能被修改重写继承

static(静态):

可以修饰成员变量,成员方法

特点:

被类的所有对象共享

也是判断是否使用static的条件

修饰的成员变量,成员方法可以通过类名直接调用

共享的情况
在这里插入图片描述

通过类名直接调用
在这里插入图片描述

注意:静态成员方法只能访问static修饰成员变量和成员方法,因为static修饰的成员是在类加载时加载
在这里插入图片描述

|
|
|
|
|
上一章节-DAY13-ArrayList集合和装拆箱
下一章节-DAY15-多态和抽象类

天天更新不容易,随手点个小赞👍,你说是吧,吴彦祖!O(∩_∩)O
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你的动作太慢了!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值