从认识论的角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的
从代码运行角度考虑是先有类后有对象。类是对象的模板
类:由属性(成员变量)和方法(非静态)构成
类借助对象体现属性和行为(方法),类中对象的属性以成员变量的形式定义,对象的行为以方法的形式定义。
类定义:[访问控制符 修饰符] class 类名{}
属性的定义:[访问控制符 修饰符] 属性类型 属性名 ;private String name;
[]代表可选
方法:避免方法的死循环
创建一个类的时候,如果主要用来存储数据,一般按照以下方式进行定义
类的定义是公共的,public
类的属性必须是私有的,private
类当中必须提供getter/setter方法
类当中必须有该方法:public 类名(){}(无参构造)
以下信息可以非标准
类当中还需提供该方法:public 类名(声明全部的属性参数信息){需要对类当中所有的属性都进行赋值 this.属性名称=属性名称;}
该类还需实现public class 类名 implement serializable{}
该类还需提供 public string tostring(){return 属性名称+“,”+属性名称+“,”+···}
按照以上方式定义处的类,我们把这种类称之为Java的bean类
对象的创建,使用new关键字创建对象;类名 返回的对象名 = new 类名 ();
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象进行默认初始化以及对类中构造器的调用
类是抽象的,需要实例化;类实例化后会返回一个自己的对象,赋值之后成为具体对象
对象的属性:返回的对象名.属性名 = 属性值
对象的方法:返回的对象名.方法名();
类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但不能代表某一个具体事物
对象是抽象的具体实例,体现特点,展现具体实例,而不是一个抽象的概念
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
必须和类的名字相同
必须没有返回类型,也不能写void
类名() {};
一个类即使什么都不写,它也会存在一个方法(如果我们不定义构造方法,java编译器依然会为每个类定义一个无参构造,这个方法是默认的)
构造器的核心作用:1、使用new关键字,本质是在调用构造器;
2、完成类实例化的时候,对类的私有属性进行初始化赋值
使用时,建议无参必须定义,有参根据是否需要定义
一旦定义了有参构造,编译器不会自动定义无参构造,如果想使用无参构造,就必须显示定义一个无参构造
alt + insert:生成构造器
定义的位置不同:局部变量定义在局部方位内(方法内),全局变量定义在类中;
初始化不同:局部变量在使用前必须赋值(局部变量不会初始化赋值),全局变量如果没有赋值,系统会自动初始化赋值
生命周期不同:一个对象在程序中(内存中)从生到死的过程,局部变量一般定义在方法中,从该方法被调用开始创建,到该方法从栈中弹出时消亡,全局变量从它所在的对象被创建时开始存在,到该对象从堆中被垃圾回收器回收时消亡。
存储的位置不同:局部变量大多存储在栈中(方法栈),全局变量一般存储在堆中;
注意:1. 在同一方法中,不允许有同名的局部变量。在不同的方法中,可以有同名的局部变量; 2. 局部变量可以和全局变量同名,并且在使用时,局部变量具有更高级的优先级。
局部变量的作用域是离它最近的大括号(就近原则);全局变量的作用域是整个类体中都有效。
当方法中含有同名的局部变量和全局变量时,对这个变量名的访问默认是局部变量,借助this,访问全局变量
this关键字代表本类对象的引用,通过关键字可以隐式的用于调用对象的全局变量和方法;this引用的是本类的一个对象
除了可以调用全员变量和成员方法外,还可以作为方法的返回值以及调用类中的构造方法(this(),此时必须在第一行)
this不能在静态方法中直接使用
调用对象属性
调用其他的构造方法,只能构造方法调用构造方法,
this. xxx = ;代表当前类的,=后面的值通常是参数传进来的值