本周学习
一、类和对象
1.定义类
【修饰符】class 类名
{
零个到多个构造器定义
零个到多个成员变量
零个到多个方法
}
修饰符:public、final、abstract(可省略)
构造器:一个类创建对象的根本途径。若需要系统会提供默认构造器。
2.定义成员变量
【修饰符】类型 成员变量名 【=默认值】
修饰符:修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private 三个最多只能出现其中之一,可以与static、final组合起来修饰成员变量。
3.定义方法
[修饰符] 方法返回值类型 方法名(形参列表)
{
// 由零条到多条可执行性语句组成的方法体
}
修饰符:修饰符可以省略,也可以是public、protected、private、static、final、abstract;其中public、protected、private 三个最多只能出现其中之一;abstr与static组合起来修饰方法。abstract和final最多只能出现其中之一,可以和static组合修饰方法。
4.定义构造器
【修饰符】 构造器名(形参列表)
{
// 由零条到多条可执行性语句组成的方法体
}
构造器为一个特殊的方法。
例:
public class Person
{
//下面定义了两个成员变量
public String name;
public int age;
//下面定义了一个say方法
public void say(String content)
{
system.out.println(content);
}
5.类实例化
// 使用Peron类定义一个Person类型的变量
Person p;
//通过new关键字调用Person类的构造器,返回一个Person实例
//将该Person实例赋给p变量
P = new Person();
或简写为
// 定义 p变量的同时并为 p变量赋值
Person p = new Person();
6.访问对象
// 访问 p的 name 实例变量,直接为该变量赋值
P.name“李刚”;
// 调用 p的say()方法,声明 say()方法时定义了一个形参
// 调用该方法必须为形参指定一个值
P.Bay(“Java语言很简单,学习很容易!”);
// 直接输出P的name实例变量,将输出 李刚
System.out.println(P.name);
7.引用
堆内存里的对象可以有多个引用,即多个引用变量指向同一个对象,
//将p变量的值赋值给p2变量
Person p2 = p;
注:如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系即可,也就是把这些引用变量赋值为null。
8.this指针
this 可以代表任何对象,当this出现在某个方法体中时,它所代表的对象是不确定的,但它的类型是确定的,它所代表的对象只能是当前类;只有当这个方法被调用时,它所代表的对象才被确定下来:谁在调用这个方法,this就代表谁
二、方法详解
1.传递机制
值传递:当方法内传递的是基本数据类型时采用值传递。
引用传递:主要发生在引用数据类型中。
2.形参个数可变的方法
方法定义时:将可变个数形参放在参数列表的最后,并在类型后面加上三个点(…)。
方法调用时:在调用带有可变个数形参的方法时,可以传入任意数量的该类型参数,或者不传入任何参数。
3.递归方法
方法体内调用它本身。
4.方法重载
在同一个类中,多个方法的参数不相同,类型不同或者数量不同。
三、成员变量和局部变量
Java变量可以分为成员变量和局部变量。
成员变量可以分为两类:实例变量和类变量。
局部变量可以分为三类:形参、方法局部变量和代码块局部变量。
1.类变量
a.生存周期
是在类的准备阶段被创建,此时系统还没有创建对应的对象。所以,类变量的创建早于实例变量。类变量会在类销毁时一同被销毁。
b.访问方式
类.类变量名
c.作用范围
整个类。
2.实例变量
a.生存周期
是在对应对象被销毁时一同被销毁。因为类一定在所有对象都被销毁时才被销毁。
b.访问方式
引用变量名.实例变量名。
c.作用范围
所属对象内。
3.成员变量和局部变量的区别
1.系统是否会默认初始化:
对于成员变量,系统会在类生成或者对象创建阶段自动为其初始化,即使成员变量没有显式赋值,系统也会为其分配内存空间并且附上零值。但局部变量除了形参外必须显式初始化(形参的初始化是调用者通过实参值传递完成的),否则系统不会为其分配内存空间。
2.在内存中的位置不同:
成员变量存储在堆内存中,与对应的类或者对象绑定。而局部变量与方法绑定,一同存储在栈内存中,方法执行结束,所有局部变量都会被销毁(代码块局部变量会在代码块结束就出栈销毁)。
四、隐藏和封装
1.三个访问控制符
public、protected、private
2.package、import、import static
五、深入构造器
1.构造器最大用处就是在创建对象时执行初始化。当程序员提供自定义构造器,系统便不再提供默认构造器。
2.构造器重载
同一个类具有多个构造器,多个构造器参数列表不同。
下周学习
面向对象(上)后五节。