Java之类与对象

1.类与对象

(1)类
类是由成员属性和方法组成的,类的定义基础语法如下

 class 类名称{
    [访问修饰符]  数据类型  成员属性;
     ...
    public 类名称(){
        程序语句;
    }
    ...
    public  返回值类型  方法名称(参数类型  参数1,参数类型  参数2,... ...){
        程序语句;
        [return表达式]}
    ...
}     

(2)对象
一个类定义完成后并不能被直接使用,因为类描述的只是一个广义概念,而具体的操作必须通过对象来执行,由于类属于Java的引用数据类型,所以对象的两种定义格式如下

//1.声明并实例化对象
/**
* 类名称:对象所有的功能必须由类定义,也就是说本操作是告诉程序类所具有的功能
* 对象名称:实例化对象的唯一标注,在程序之中利用此标注可以找到一个对象
* new:类属于引用数据类型,所以对象的实例化一定要用new开辟堆内存空间
* 类名称():表示调用构造方法
*/
类名称 对象名称 = new 类名称();
//2.分步定义
类名称 对象名称 = null;
对象名称 = new 类名称();


/**
* 在Java中引用数据类型是需要进行内存分配的,所以在定义时必须通过关键字new来分配相应的内存空间后才可以使用,此时该对象也被称
* 为“实例化对象”,而一个实例化对象就可以采用以下的方式进行类结构的操作
*/
对象.成员属性;//表示调用类之中的成员属性,可以为其赋值或者获取其保存内容
对象.方法();//表示调用类中的方法

2.构造方法

(1)构造方法介绍
构造方法是在类中定义的一种特殊方法,它在一个类使用关键字new实例化新对象时默认调用,其主要功能是完成对象属性的初始化操作

(2)构造方法的定义要求

  • 构造方法的名称与类名一致
  • 构造方法不允许有返回值声明
  • 构造方法可以重载

注:如果类中没有明确定义构造方法的话,则会自动生成一个无参数且无返回值的构造方法,反之则不会自动生成

(3)匿名对象:
没有栈内存指向的对象称之为匿名对象,特点是只能使用一次,且使用后就将成为垃圾空间等待GC回收

3.访问控制权限(从左到右,权限从小到大)

Java之类与对象_第1张图片

4.this关键字

this描述的是本类结构调用的关键字,在Java中,this关键字可以描述以下三种结构的调用
(1)调用本类属性。
this.属性名表示调用本类属性
注:为了避免不必要的bug出现,建议只要调用本类中的成员属性都是用this关键字

(2)this调用本类方法:

  • this.方法()表示调用本类普通方法
  • this()表示调用本类构造方法,但是只能放在构造方法首行使用,且类中如果存在多个构造方法都使用了this()相互调用需要至少保留一个构造方法没有调用其他构造方法

(3)表示当前对象
this表示当前对象(正在访问类中方法的对象可以称为当前对象,可用this表示)

5.static关键字

(1)static关键字介绍
static关键字用于声明全局属性和全局方法,主要特点是避免对象实例化的限制,在没有实例化对象的时候直接进行此类结构的访问
在程序启动的时候就创建。

(2)static定义全局属性:
全局属性可在没有实例化对象的情况下利用类名称调用。static定义的属性内容不在堆内存中保存,而是保存在全局数据区,是该类定义的所有对象的公共属性

(3)static定义的方法:

  • static定义的方法可以在没有实例化对象的情况下利用类名调用
  • static定义的方法不能调用非static的方法或者属性(所以在主方法中定义的方法一定要用static)
  • 非static定义的方法可以调用static的属性或者方法
  • static定义的方法中不允许使用this表示当前对象

6.代码块

(1)普通代码块
是定义在方法中的代码块,可以解决一个方法过长导致出现重复变量定义的问题

(2)构造代码块
是定义在类中的代码块,特点每一次实例化新对象时都会调用构造块,并且构造代码块的执行优先于构造方法的执行

(3)静态代码块
是使用static关键字定义在类中的代码块,特点是优先于构造代码块执行且无论实例化多少个对象,静态代码块只执行一次

你可能感兴趣的:(Java语法,java,开发语言)