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,子类保持一致即可
- 子类不可以重写父类的私有方法,还是因为不可见
- 如果子类对父类的功能进行了重写,调用的是重写后的功能
###############################################################