当前位置:首页学习笔记Java笔记3.4 static-继承-final

3.4 static-继承-final

Static关键字

01-static介绍

static 是静态的意思,可以修饰成员变量,也可以修饰成员方法,被其修饰的成员只在内存中 [只存储一份],可以被 [共享] 访问、修改。

02-static修饰成员变量

特点 :

  1. 被 static 修饰的成员变量,  被类的所有对象所共享
  1. 多了一种调用方式,  可以通过类名.进行调用
  2. 随着类的加载而加载,  优先于对象存在

03-static修饰成员变量内存图

3.4 static-继承-final

04-static修饰成员方法

方法的分类

  1. 静态方法
  2. 实例方法(非static的)

调用方式 :

  1. 静态方法
    A :  类名调用 (推荐)
    B :  对象调用 (不推荐)
  2. 实例方法(非static的)
    A :  只能对象调用

05-工具类

  • 介绍:对于一些应用程序中多次需要用到的功能,可以将这些功能封装成静态方法,放在一个类中,这个类就是工具类。
  • 好处:一是方便调用,二是提高了代码复用
  • 要求:  建议将工具类的构造器私有,不让工具类对外产生对象。

练习:

需求:在实际开发中,经常会遇到一些数组使用的工具类。请按照如下要求编写一个数组的工具类:ArraysUtils

请在ArraysUtils中提供一个工具类方法toString,用于返回整数数组的内容,返回的字符串格式如:[10, 20, 50, 34, 100](只考虑整数数组,且只考虑一维数组)

经常需要统计平均值,平均值为去掉最低分和最高分后的分值,请提供这样一个工具方法getAerage,用于返回平均分。(只考虑浮点型数组,且只考虑一维数组)

定义一个测试类TestDemo,调用该工具类的工具方法,并返回结果。

面向对象-继承

01-继承介绍

  • 继承 : 让类与类之间产生关系,  子父类关系, 当建立起子父类关系后, 子类就可以直接使用父类中,  非私有的成员 (成员变量, 成员方法)
  • 使用继承前 :
3.4 static-继承-final
  • 使用继承后 :
3.4 static-继承-final
  • 继承的优缺点
3.4 static-继承-final

02-继承中成员变量的访问特点

  • 思考 : 子父类中,  如果出现了重名的成员变量,  会优先使用谁的 ?
  • 根据就近原则,  优先使用子类的
  • 思考 : 如果非要使用父类的成员,  使用那个关键字进行区分 ?
  • super

03-继承中成员方法的访问特点

  • 思考 : 当子父类中,  出现了相同的成员方法 (方法名,  参数, 返回值), 在创建子类对象后, 调用方法,  会调用谁的逻辑?
  • 子类方法逻辑,  但这不是就近原则,  是子类的方法对父类方法进行了重写

04-方法重写-Override

3.4 static-继承-final

05-权限修饰符

3.4 static-继承-final

protected以后开发中基本不用,调用很麻烦,以后开发要么使用private,要么public

3.4 static-继承-final

06-Java中继承的特点

  • Java只支持单继承,不支持多继承,但支持多层继承
  • 单继承:一个类,只能有一个父类
  • 多层继承:子类可以继承父类,父类可以继续继承爷爷类

05-继承中构造方法的访问特点

  • 问题 : 构造方法能被继承吗 ?
  • 不可以,  因为构造方法要求方法名和类名保持一致
  • 问题 : 子类初始化之前,  是否需要完成父类的初始化 ?
  • 一定要!因为子类在初始化的过程中,很有可能会使用到父类的数据
    因此,子类在初始化之前,一定要先完成父类数据的初始化.
  • 问题:子类是如何完成父类数据初始化的呢?
  • 思考,初始化一个对象,用的是什么方法?
  • 构造方法
  • 所以,子类在初始化的时候,只要有办法访问到父类的构造方法,就能完成父类的初始化了
  • 问题 : 子类是如何访问到父类构造方法的呢?
  • 在所有构造方法中 (Object类除外),默认隐藏着一句话 super();

通过这句话来访问父类的空参构造方法

  • 问题:如果父类没有空参构造,子类的 super(); 怎么办?
  • 意义所在:子类可以将所需要的所有数据,通过有参构造方法接收,其中父类有的数据,就通过super()交给父类完成初始化!
package com.itheima.constructor;

public class Person {
private String name;
private int age;

public Person() {
	}

public Person(String name, int age) {
    this.name = name;
    this.age = age;
	}

public String getName() {
    return name;
	}

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

public int getAge() {
    return age;
	}

public void setAge(int age) {
    this.age = age;
	}
}
package com.itheima.constructor;

public class Student extends Person {
private int score;

public Student() {

	}

public Student(String name, int age, int score) {
    super(name, age);
    this.score = score;
	}

public int getScore() {
    return score;
	}

public void setScore(int score) {
    this.score = score;
	}
}
public class Test {
    public static void main(String[] args) {
        Student stu = new Student("钢门吹雪",23,100);
        System.out.println(stu.getName() + "---" + stu.getAge() + "---" + stu.getScore());
    }
}
  • 必掌握案例

06-this和super关键字

3.4 static-继承-final

final

01-介绍

  • final 关键字是最终的意思,可以修饰(方法,类,变量)

02-final特点

3.4 static-继承-final
温馨提示:

文章标题:3.4 static-继承-final

文章链接:https://www.cutrui.cn/2992.html

更新时间:2023年07月31日

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
Java笔记学习笔记

3.3 学生管理系统

2023-7-31 12:46:19

Java笔记学习笔记

3.5 JDK8,9新特性-抽象类-接口-多态

2023-7-31 13:08:03

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

你有新的私信

请务必要查看您的私信哟~~