关于方法的重载(overload)
优点:
1.程序员只需要记忆很少的方法名,方便调用
2.代码更加关注
什么时候发生方法的重载:
1.发生在同一个类中
2.方法名不同
3.参数列表不同(类型,个数,顺序)
方法的重载和方法的返回值以及形参名无关
方法的执行原理:
方法在调用的时候,才会给该方法在内存中分配空间
如果这个方法只是定义没有调用,则不会在内存中分配空间
方法调用的时候在“栈”中分配空间,(JVM)内存中有一块内存是栈结构
方法调用其实就是“压栈”
方法结束其实就是“弹栈”
关于方法的递归调用
1.方法的递归调用就是方法自身调用自身
类:一类具有相同特征的事物构成的集合
把现实世界中的抽象化
实例:类的具体化
OOA 面向对象的分析
OOD 面向对象的设计
OOP 面向对象的编程
JVM中所有new出来的数据统一被储存在堆区中,程序员是无法对堆区数据直接操作,
只能通过内存地址间接访问
访问成员变量或者成员方法必须使用“引用.”(成员变量属于对象级的)
面向对象的封装性指的是:
1.属性私有化
2.对外部提供公开的setter,getter
set和get方法的方法名应该遵循规范
关于java类的构造函数
1.构造方法语法
[修饰符列表] 构造方法名[形式参数表]{
方法体
}
2.构造方法的方法名必须要类名一致
3.构造方法的作用是什莫?
第一:创建对象
第二:初始化对象的属性
4.构造方法应该如何调用?
new 构造方法名(实参); 在堆中开辟空间储存对象
5.如果一个类没有提供任何构造方法,系统会默认提供无参构造方法
如果一个类已经手动提供了构造方法,那抹系统不再提供任何构造方法
6.成员变量到底什么时候赋值?
只有在调用构造方法的时候,才会给成员变量赋值
GC垃圾回收机制主要针对堆中的数据,当没有更多的引用指向时,则会被垃圾回收机制
如果使用空的引用去访问,则会出现空指针异常
参数传递的问题:
1.传递的数据是基本数据类型 (值)
2.传递的数据是引用数据类型 (地址)
this关键字:
1.this是什么?
this是一个引用类型
在堆中java的每个对象中都有一个this,保存地址指向当前对象
2.this能用在哪些地方?
构造方法,实例方法
this可以用来区分成员变量和局部变量
this不能出现在静态方法中:
静态方法的执行根本不需要java对象的存在,直接使用 类名.方式的访问
而this代表的是当前对象,所以静态方法中根本没有this
static关键字:
1.static修饰的变量叫做”静态变量”
2.static修饰的方法叫做”静态方法”
3.static还可以定义静态语句块
static定义的静态语句块在类加载阶段执行,并且只执行一次,并且是自上而下的顺序执行
关于实例语句块:
每一次调用构造方法之前会执行一次
实例语句块执行顺序也是自上而下
static修饰的方法叫做静态方法
静态方法正规方式访问:”类名.”方式调用
一般情况下工具类中的大部分方法都是静态方法
静态方法不用创建对象也能直接访问该方法
静态方法中不能直接访问非静态数据
静态方法中不能使用this
!!静态方法也能使用“引用.”访问,在编译阶段检查出类型,运行的时候仍然使用”类.调用”
static修饰的变量叫做“静态变量”
方法区
什么时候变量声明为静态变量?
如果这个属性所有的对象都有,并且这个属性的值是相同的,则该属性声明成静态的属性
静态变量储存在方法区,所有的java对象共享这一份
所以静态变量是类级别的,使用“类名.”的方式访问
单例设计模式:
1.构造方法私有化
2.对外提供一个公开的静态的获取当前类型对象的方法
3.提供一个当前类型的静态变量
单例设计模式分为两种:
懒汉式
饿汉式
继承:
引入类继承基本的作用:代码复用
语法:
[修饰符列表] class 子类名 extends 父类名 {
类体
}
java语言单继承
java语言中子类继承父类,会将父类中所有的数据全部继承,包括私有的也能全部继承过来
但是在子类中无法直接方法父类中的私有数据,但是可以间接的访问。
注意:构造方法无法被子类继承