目录
一、面向对象的三大特点
继承、多态、封装
二、Java的类和对象
Java是一门纯面向对象的语言
1.类
是具有共同属性的一系列对象的描述,由属性(类的属性)和方法(类的操作)组成。相当于建立的一个特殊的数据类型。
2.对象
就是静态属性(属性、数据成员、成员变量)和动态方法(方法和方法成员)的封装体。
①Java的引用
除了基本数据类型以为其他的变量类型都是引用类型,存放在栈(stack)内存区。
②对象的调用和使用规则
使用new方法创建对象,都存放在堆(heap)内存区;对象变量.成员变量 :访问对象的成员变量;对象变量.方法:调用对象的方法。
3.类和对象的关系
类的对象的定义,对象是类的实例,类似于int a,int就相当于类,a相当于对象,int是对a的i定义,a是int类型的一个实例。
4.JVM的内存分配
注意:
※同一个类的每一个对象占用不同成员变量的存储空间。
※引用类型变量存放再栈内存中。
※对象通过new产生,位于对内存,类的每一个成员变量在不同的对象中有不用的值,除了静态变量以外,静态变量在所有的类内的值都是相同的。
※方法仅存一份,存放在代码区,执行时再分配内存。同一个类的每一个对象共享这一份代码。
※Java具有自己的垃圾回收机制,通过垃圾回收器,释放由new分配的内存。
5.类的构造方法
使用构造函数,也就是初始化对象,构造函数的名字必须和类名相同且不能指明返回值类型(void也不可以)。用户不可以直接调用构造函数必须使用new方法,可以通过传入的参数不同来实现构造函数重载,也是对象多态的体现,在创建对象的时候Java会自动调用构造方法对新对象进行初始化。当且仅当不提供构造方法的时候,编辑器默认构造方法。
注意:
※类可以没有显性构造函数,当不提供构造方法的时候,编译器为提供默认构造方法,在创建对象的时候,JAVA语言会自动调用构造方法为新对象初始化。
※构造方法是对对象初始化的方法,所以没有返回类型,也不可以用void来声明。
※用户不能直接调用构造函数,只能通过new操作调用。
※构造方法必须与类名相同。
※一个类可以创建多个构造方法,但必须具有不同的参数,这是对象多态性的体现,可以利用不同参数调用不同构造方法,实现对象的不同初始值,构造方法的这种多个方法共享相同名字的特性叫做重载。
默认构造方法对成员的初始化:
构造和初始化对象顺序:
new初始化对象的顺序
1、申请内存空间,为新对象分配空间并初始化,所有基本类型数据设置成默认值。
2、执行显性初始化
3、执行构造方法
4、对该对象的引用赋值给引用变量。
6.this引用
当局部变量和成员变量的名字相同时候,成员变量就会被隐藏,这时如果想在成员方法中使用成员变量,则必须使用关键字this。this就是帮助你找到你想要的成员变量上课举出这个例子就很好理解:
public class Fruit{
public String color=“绿色”; //定义颜色成员变量
public void harvest(){ //定义收获的方法
String color=“红色”; //定义颜色局部变量
System out println(“水果是:”+color+“的!”);
System out println(“水果原来:”+this.color+“的!”};}//这里在访问成员变量color
public static void main(String[] args){
Fruit f=new Fruit();
f.harvest(); }
}
7.静态数据成员
类的所有对象共有的一个属性,通过static定义,仅在(data segment)数据区存一份,所有对象共享。
8.静态方法
对类自身进行操作,只能出现静态数据成员和其他静态方法。
注意:静态方法和静态数据成员都可以直接通过类访问也可以通过对象访问。
9.对象变量的传递
基本数据类型:按照值的传递和使用。
对象数据类型:按照引用得传递和使用。
注意:
※通过对象变量使用对象(引用地址)。
※对象变量不等于变量本身,对象变量使用前要初始化。
※对象变量为空是为null,判断一个引用是否指向一个对象:if(a!=null),判断两个引用是否指向同一个变量:if(a==b),判断两个对象得值是否相等:a.equals(b).
三、包(package)
将类剧集起来可以组成一个包(可以理解成是一个文件夹),方便组织代码,解决命名冲突得问题,比如说同一个名称得类可以在不同的包中存在,也不会存在冲突问题,标准Java库类包:java.lang、java.util、java.net。
1.包的命名
域名的倒写
2.把类加入包中
包的名字放在源文件的顶部,除了注释外的第一句(其实就是说明要加入包的位置),包中编译后的class文件存放在与完整包名匹配的子目录中。
注意:
※编译时不会自动检查包路径的正确性。
※执行时要写类的全称(在命令提示符执行时)。
3.使用包
类可以使用所在包的所有类。
类可以使用其他包的public类,可以(import)先导入包,再使用public类,也可以直接写出完整包名使用public类。
注意:
※java.lang包中的类不用import可以直接使用。
※声明类所属的包,包名字要放在源文件的顶部。