二、static关键字注意事项
• 在静态方法中是没有this关键字的
• 静态方法只能访问静态的成员变量和静态的成员方法
类的成员变量分为两种:
1、实例变量(ps:也就是没有被static关键字修饰的变量)
2、静态变量
三、 静态变量和成员变量的区别
(1、) 所属不同
• 静态变量属于类,所以也称为为类变量
• 成员变量属于对象,所以也称为实例变量(对象变量)
(2、)内存中位置不同
• 静态变量存储于方法区的静态区
• 成员变量存储于堆内存
(3、) 内存出现时间不同
• 静态变量随着类的加载而加载,随着类的消失而消失
• 成员变量随着对象的创建而存在,随着对象的消失而消失
(4、) 调用不同
• 静态变量可以通过类名调用,也可以通过对象调用
• 成员变量只能通过对象名调用
四、成员变量和局部变量的区别
l 在类中的位置不同
• 成员变量:类中方法外
• 局部变量:方法内或者方法声明上
l 在内存中的位置不同
• 成员变量:堆内存
• 局部变量:栈内存
l 生命周期不同
• 成员变量随着对象的存在而存在,随着对象的消失而消失
• 局部变量随着方法的调用而存在,随着方法的调用完毕而消失
l 初始化值不同
• 成员变量有默认的初始化值
• 局部变量没有默认的初始化值,必须先定义,赋值,才能使用。
五、main方法是静态的
l public static voidmain(String[] args) {}
• public 被jvm调用,访问权限足够大。
• static 被jvm调用,不用创建对象,直接类名访问
• void被jvm调用,不需要给jvm返回值
• main 一个通用的名称,虽然不是关键字,但是被jvm识别
• String[] args以前用于接收键盘录入的
六、访问控制符
Java语言中,访问修饰符可以出现在类,成员变量,成员方法以及构造方法前,用来控制权限。Java提供了4种级别的访问控制
public 权限最宽 修饰的类,属性,方法不仅可以跨类还可以跨包访问
private 权限最狭隘 修饰的类,属性,方法只能被该类的对象访问,即使是其子类也不能访问! 做的很绝-.-
protected 介于public和private之间 修饰的类,属性,方法能被该类的对象,本包,子类访问(即使没和父类在同一包中)
default 默认访问模式,只向同一个包中的类公开,即同包访问。
七、 成员变量
• 构造方法
• 静态方法只能访问静态的成员变量和静态的成员方法
类的成员变量分为两种:
1、实例变量(ps:也就是没有被static关键字修饰的变量)
2、静态变量
三、 静态变量和成员变量的区别
(1、) 所属不同
• 静态变量属于类,所以也称为为类变量
• 成员变量属于对象,所以也称为实例变量(对象变量)
(2、)内存中位置不同
• 静态变量存储于方法区的静态区
• 成员变量存储于堆内存
(3、) 内存出现时间不同
• 静态变量随着类的加载而加载,随着类的消失而消失
• 成员变量随着对象的创建而存在,随着对象的消失而消失
(4、) 调用不同
• 静态变量可以通过类名调用,也可以通过对象调用
• 成员变量只能通过对象名调用
四、成员变量和局部变量的区别
l 在类中的位置不同
• 成员变量:类中方法外
• 局部变量:方法内或者方法声明上
l 在内存中的位置不同
• 成员变量:堆内存
• 局部变量:栈内存
l 生命周期不同
• 成员变量随着对象的存在而存在,随着对象的消失而消失
• 局部变量随着方法的调用而存在,随着方法的调用完毕而消失
l 初始化值不同
• 成员变量有默认的初始化值
• 局部变量没有默认的初始化值,必须先定义,赋值,才能使用。
五、main方法是静态的
l public static voidmain(String[] args) {}
• public 被jvm调用,访问权限足够大。
• static 被jvm调用,不用创建对象,直接类名访问
• void被jvm调用,不需要给jvm返回值
• main 一个通用的名称,虽然不是关键字,但是被jvm识别
• String[] args以前用于接收键盘录入的
六、访问控制符
Java语言中,访问修饰符可以出现在类,成员变量,成员方法以及构造方法前,用来控制权限。Java提供了4种级别的访问控制
public 权限最宽 修饰的类,属性,方法不仅可以跨类还可以跨包访问
private 权限最狭隘 修饰的类,属性,方法只能被该类的对象访问,即使是其子类也不能访问! 做的很绝-.-
protected 介于public和private之间 修饰的类,属性,方法能被该类的对象,本包,子类访问(即使没和父类在同一包中)
default 默认访问模式,只向同一个包中的类公开,即同包访问。
七、 成员变量
• 构造方法
• 构造方法
• 无参构造方法
• 带参构造方法
• 成员方法
• getXxx()
• setXxx()
l 给成员变量赋值的方式
l 无参构造方法+setXxx()
l 带参构造方法
八、代码块
l 代码块
• 在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。
• 局部代码块
• 在方法中出现;限定变量生命周期,及早释放,提高内存利用率
• 构造代码块
• 在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
• 静态代码块在类中方法外出现,加了static修饰
• 在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且值执行一次。
静态代码块,构造代码块,构造方法的执行顺序?
静态代码块 -- 构造代码块 -- 构造方法
静态代码块:只执行一次
构造代码块:每次调用构造方法都执行
九、继承
l 继承概述
• 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
• 通过extends关键字可以实现类与类的继承
• class 子类名 extends 父类名{}
• 单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
• 有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。
继承的好处
l 继承的好处
• 提高了代码的复用性
• 多个类相同的成员可以放到同一个类中
• 提高了代码的维护性
• 如果功能的代码需要修改,修改一处即可
• 让类与类之间产生了关系,是多态的前提
• 其实这也是继承的一个弊端:类的耦合性很强
让类的耦合性增强。这样某个类的改变,就会影响其他和该类相关的类。
原则:低耦合,高内聚。
耦合:类与类的关系
内聚:自己完成某件事情的能力
Java中继承的特点
l Java只支持单继承,不支持多继承。
• 一个类只能有一个父类,不可以有多个父类。
l Java支持多层继承(继承体系)
十、封装
l 封装概述
• 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
l 好处:
• 隐藏实现细节,提供公共的访问方式
• 提高了代码的复用性
• 提高安全性。
l 封装原则:
• 将不需要对外提供的内容都隐藏起来。
• 把属性隐藏,提供公共方法对其访问。
private关键字
l private关键字:
• 是一个权限修饰符。
• 可以修饰成员(成员变量和成员方法)
• 被private修饰的成员只在本类中才能访问。
l private最常见的应用:
• 把成员变量用private修饰
• 提供对应的getXxx()/setXxx()方法
• 一个标准的案例的使用
this关键字
l this:代表所在类的对象引用
l 注意:
• 方法被哪个对象调用,this就代表那个对象
十一、匿名内部类
l 就是内部类的简化写法。
l 前提:存在一个类或者接口
• 这里的类可以是具体类也可以是抽象类。
l 格式:
new类名或者接口名(){重写方法;}
静态代码块 -- 构造代码块 -- 构造方法
静态代码块:只执行一次
构造代码块:每次调用构造方法都执行



