day007

本文详细讲解了Java中项目结构、构造方法的this与super使用、继承机制、重写与重载的区别,以及静态资源的特性。重点介绍了如何在子类中正确调用父类构造方法和资源,以及静态代码块和代码块的执行顺序。
摘要由CSDN通过智能技术生成

idea中:project==workspace(eclipse)

project(module,module,module,module)

构造方法:与类同名,无返回值
创建对象时使用

###############################################################

<day06总结复习>
当本类的成员变量与局部变量同名时,可以使用this.变量名的方式指定成员变量

this还可以实现构造方法的调用,注意构造方法直接不可以相互调用,否则会死循环,除此之外,本语句必须写在构造方法的第一行

this();代表的是调用

this

###############################################################

构造代码块:(类里方法外)
注意:每一次创建对象时才会触发,而且优先于构造方法执行

局部代码块:(方法里)
注意:只有调用局部代码块所处方法时,局部代码块才会执行

执行顺序:构造代码块->构造方法->局部代码块

###############################################################

idea–>创建project(相当于创建工作空间)
一个项目下有多个模块(module),如购物车模块/支付模块

在module下的src文件中创建包-类

继承:…

  • 子类创建对象时,默认会先去调用父类的构造方法

  • 原因是由于子类构造函数的第一行默认存在一个super()–表示调用父类的无参构造

  • 当父类没有无参构造时,可以通过super(参数)调用父类的其他含参构造

  • 构造方法不可以被继承(因为语法要求构造方法的名称与其类同名,天然不符合要求)

  • 使用父类的资源必须用super来指定

  • super表示父类的对象,可以理解成Father super = new Father()

  • super【只能】在构造方法用

###############################################################

  • 通过extends关键字建立子类与父类的继承关系,格式:子类 extends 父类
  • java只支持单继承(一个子类只能有一个,但一个父类可以有多个子类)
  • 继承还具有传递性,爷爷的功能会传给爸爸,爸爸的功能会传给孙子
  • 子类可以拥有自己独有的方法,实现的功能的拓展
  • 子类继承父类后,可以使用父类的所有非私有资源(注意:这个私有资源是由于子类不可见而不能使用的,
  • 不是因为没有继承,因为子类在继承了父类后,相当于把父类的功能完全复制了一份)
  • 继承是is-a的关系,比如小猫是小动物,MiaoMiao是一只小猫,
  • 继承要求子类必须是父类的一种下属类型,依赖性非常强,强耦合(模块功能间的关联性强/很难分离开使用/不能轻易多做改动)

###############################################################

idea文档注释左边栏可以点击按钮切换游览模式,添加

,
可以实现另一种游览模式下的分段.

idea—ctrl+alt+L–>自动排版
—ctrl+shift+(-/+)–>全展开/全折叠

###############################################################

@Override这只是一个注解,可以理解成一个标签,标记这个方法是一个重写的方法
(只有重写的方法前面才能加此标签)

还可以通过super调用父类的构造方法,子类的构造方法首行默认调用super

子类其实…

构造方法的调用只能在构造方法的首行-this()本类-super()父类

###############################################################

重写:是为了方便外界对方法进行调用,什么样的参数程序都可以找到对应的方法来执行,体现的是程序的灵活性

重载:是在不修改源码的前提下,进行功能的修改和拓展
(OCP原则:面向修改关闭–停服更新,面向拓展开发–热更新)

###############################################################

可以在没有对象的情况下,直接通过类名调用静态资源

static修饰的静态资源被全局所有对象共享,且静态资源优先于对象进行加载,它是随着类的加载而加载的

###############################################################

普通资源既可以调用普通资源也可以调用静态资源
静态资源只能调用静态资源

局部代码块:用于限制变量的作用范围数百行的方法中,若某变量只使用于短短几行,则可以提前释放掉减少内存消耗

静态代码块:静态代码块也属于静态资源,随着类的加载而加载,优先于对象加载并且静态资源只会加载一次
作用:用于加载那些需要第一时间就加载,并且只加载一次的资源(开机选项)
执行时机:类加载时就加载,而且只会加载一次(玩家登录)

执行顺序:静态代码块–>构造代码块–>构造方法【对象创建成功】–>局部代码块

###############################################################

继承,super,重写于重载
static静态,final

顺序:
先静态后普通
先父类后子类

###############################################################

成员变量在堆里(有默认值),局部变量在栈里(无默认值)

类中可以用this可以把除static以外的资源全.出来

this()无参构造必须先调用

对象1=对象2;对象1==对象2;true,将两个变量名所指向的存储区相同,两个变量名进行的操作将同时对对方进行影响(本质上多了一个变量名)

对象1==对象2:false,内存地址是两个地方

###############################################################

  • 以前实现的思路不适于当下

  • 继承后子类对父类的功能部分不满意–重写,完全不接受–新增

  • 重写的预防规则:两同 两小 一大

一大: 子类方法的修饰符范围 >= 父类方法的修饰符范围–指的是访问修饰符(public>默认/protected)

两同: 方法名相同,参数列表相同

两小: 子类方法的返回值类型 <= 父类方法的返回值类型(这个返回值类型指的是继承关系)

如父类–void,子类–void;父类–Cat,子类–MiaoMiao

  • 子类方法抛出的异常类型 <= 父类方法抛出的异常类型
  • 注意:如果父类方法的返回值类型是void,子类保持一致即可
  • 子类不可以重写父类的私有方法,还是因为不可见
  • 如果子类对父类的功能进行了重写,调用的是重写后的功能

###############################################################

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值