Java语言基础(构造方法以及static,super,final关键字的使用)

构造方法

目录:
1.概述
2. 构造方法的重载
3. static关键字的使用
4.继承中的构造方法
5.super关键字的使用
6.方法的重写
7.final关键字的使用

1.概述

构造方法的作用:创建对象,给对象中的成员进行初始化。 构造方法格式的特点:

  • 方法名与类名相同
  • 没有返回值类型,连void都没有
  • 没有具体的返回值

构造方法的注意事项:
1:如果我们没有给出构造方法,系统将自动提供一个无参构造方法。
2:如果我们给出了构造方法,系统将不再提供默认的无参构造方法,这个 时候,如果我们还想使用无参构造方法,就必须自己给出。建议永远自己给出无参构造方法

2.构造方法的重载
  • 一个类中可以有 多个 构造方法,多个构造方法是以 重载 的形式存在的
  • 构造方法是可以被 private 修饰,作用是:其他程序无法创建该类的对象
    举例:
class Person {
    private int age;
    private String name;

    // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象
    private Person() {
    }
    // 多个构造方法是以重载的形式存在
    Person(int a) {
        age = a;
    }
    Person(String nm, int a) {
        name = nm;
        age = a;
    }
}
3.static关键字的使用

static关键字的特点:

  • 随着类的加载而加载
  • 优先于对象存在
  • 被类的所有对象共享
  • 可以通过类名调用
静态变量与成员变量之间的区别:
  • 所属不同
    静态变量属于类,所以也称为类变量
    成员变量属于对象,所以也称为实例变量(对象变量)
  • 内存中位置不同
    静态变量存储于方法区的静态区
    成员变量存储于堆内存
  • 内存出现时间不同
    静态变量随着类的加载而加载,随着类的消失而消失
    成员变量随着对象的创建而存在,随着对象的消失而消失
  • 调用不同
    静态变量可以通过类名调用,也可以通过对象调用,推荐使用类名调用
    成员变量只能通过对象名调用
4.继承中的构造方法
为什么子类中所有的构造方法默认都会访问父类?

因为子类会继承父类中的数据,可能还会使用父类的数据。 所以,子类初始化之前,一定要先完成父类数据的初始化。

父类没有无参构造方法,子类怎么办?
  • 在父类中添加一个无参的构造方法
  • 子类通过super去显示调用父类其他的带参的构造方法
  • 子类通过this去调用本类的其他构造方法

举例:

package com;
public class didi {
    public static void main(String[] args) {
        didi zi = new didi();
        new didi(20);
        Zi zi1 = new Zi();
        new Zi(20);
    }

    public didi() {
        super();
        System.out.println("无参构造");
    }

    public didi(int aaa) {
        super();
        System.out.println("父类的有参构造执行了"+aaa);
    }
}
class Zi extends didi{
    public Zi() {
        super(100); //调用父类的空参构造
        System.out.println("子类的参构造执行了");
    }
    public Zi(int b) {
        this();
        System.out.println("子类的空参构造执行了");
    }
}
5.super关键字的使用

this 代表的是本类对象的引用
super代表的是父类存储空间的标识(可以理解成父类的引用,可以操作父 类的成员

super与this之间的区别:
  • 调用成员变量
    this.成员变量 调用本类的成员变量
    super.成员变量 调用父类的成员变量
  • 调用构造方法
    this(…) 调用本类的构造方法
    super(…) 调用父类的构造方法
  • 调用成员方法
    this.成员方法 调用本类的成员方法
    super.成员方法 调用父类的成员方法

注意:
super(…)或者this(….)必须出现在第一条语句上

6.方法的重写

重写:子类中出现了和父类中一模一样的方法声明(方法名,参数列表,返回值类型),也被称为方法覆盖,方法复写。

方法重写的应用:当子类需要父类的功能,而功能主体子类有自己 特 有内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的内容。

方法重写的注意事项:

  • 父类中私有方法不能被重写
    因为父类私有方法子类根本就无法继承
  • 子类重写父类方法时,访问权限不能更低
    最好就一致
  • 父类静态方法,子类也必须通过静态方法进行重写
7.final关键字的使用

概述:final关键字是最终的意思,可以修饰类,变量,成员方法。

  • 修饰类: 被修饰类不能被继承
  • 修饰方法: 被修饰的方法不能被重写
  • 修饰变量: 被修饰的变量不能被重新赋值,因为这个量其实是一个常量
  • 修饰的引用类型的变量 :值为对象地址值地址值不能更改,但是地址内的对象属性值可以修改final
  • 修饰成员变量 :需要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均需要为其赋值。)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贫僧洗发爱飘柔

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

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

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

打赏作者

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

抵扣说明:

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

余额充值