Java中的类

来源:互联网 发布:凸的网络意思是什么 编辑:程序博客网 时间:2024/06/07 15:00

在Java语言中经常被提到的两个词汇是类与对象,实质上可以将类可以看作是对象的载体,它定义了对象所具有的功能。

什么是类?

不可能将所谓的一个事物描述成一类事物,如一只鸟不能称为鸟类,如果需要对同一类事物统称,就得提出类的概念。类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称,如鸟类、家禽类、人类等。类是构造对象时所依赖的规范,例如,一只鸟具有一对翅膀,而它可以通过这对翅膀飞行,而基本上所有的鸟都具有这个特性和飞行的技能,这样具有相同特性和行为的一类事物就称为鸟类,类的思想就是这样产生的。类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。

类的构造方法(构造器)

在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象时,类就会自动调用构造方法。◇构造方法没有返回值◇构造方法的名称要与本类的名称相同。◇在构造器中,不需要使用return语句.    其实构造器是有返回值的,返回的是当前创建对象的引用.
public book(){    //构造方法体}//在构造方法中可以为成员变量赋值,这样当实例化一个本类对象时,相应变量也将被初始化。//如果在类中定义的构造方法都不是元参的构造方法,则编译器不会为类设置一个默认的元参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。

Practice
This关键字调用类的成员变量和成员方法。

//注意:在无参构造方法中可以使用this关键字调用类的成员变量和成员方法,事实上this还可以调用类中的构造方法

public class AnyThting {    public AnyThting(){     //定义无参构造方法        this("this调用有参构造方法");     //使用this关键字调用有参构造方法        System.out.println("无参构造方法");    }    public AnyThting(String name){          //定义有参构造方法        System.out.println("有参构造方法");    }}

类的代码块

代码块的概念

在类中或者在方法中,直接用{}括起来的一段代码,表示一块代码区域。

代码块的分类

■局部代码块public void method(){        System.out.println("局部代码块");    }→只会在被调用的时候执行,理论上能被执行无数次。■初始化代码块{    System.out.println("初始化代码块");}→会在创建对象时执行,先执行初始化代码块,再执行构造方法代码块,每new一次就会执行一次■构造代码块public Block(){        System.out.println("构造方法");    }→与初始化代码块一样,都是在创建对象的时候执行的,每new一次就会执行一次。■静态代码块static {        System.out.println("静态代码块");    }→会随着类的加载而加载,只会执行一次

代码块的初始化顺序

静态代码块->初始化代码块->构造方法代码块->局部代码块

类的主方法

主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。主方法的语法格式如下:
public static void main(String args[]){    //}□主方法是静态的。要直接在主方法中调用其他方法,则该方法必须也是静态的。□主方法没有返回值□主方法的形参为数组用args[0]~args[n]分别代表程序的第一到第n个参数,可以使用args.length获取参数的个数

成员变量

在Java语言中对象的属性称为成员变量,也可以称为属性。
归属于类,在类创建时就加载到了方法区中。
不必初始化就可以使用,因为这成员变量有初始值。
成员变量的有效范围是整个类(所以成员变量又称全局变量)

Demo

public class Book {    private int id;         //定义一个int成员变量    private String name;    //定义2个Sting型的成员变量    private String category;       public String getName(){   //定义一个getName()方法        int id=0;   //局部变量        setName("java");   //调用类中的其他方法        return id+this.name;    //设置方法的返回值    }    private void setName(String name){   //定义一个setName方法        this.name=name;       //将参数赋予类的成员变量    }    public Book getBook(){        return this;        //返回book类引用    }}

成员方法

在Java语言中使用成员方法对于类对象的行为。以Book类为例,它包含getName()和setName()两个方法,分别获取图书名称和设置图书名称的方法。

权限修饰符 返回值类型 方法名(参数类型 参数名){    ....//方法体    return 返回值;}//在成员方法中可以调用其他成员方法和类成员变量。如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行访问。

局部变量

局部变量是在方法被执行时创建的,在方法执行结束时被销毁。局部变量在使用时必须进行赋值或被初始化,否则会出现编译错误。

public String getName(){    //定义一个getName方法    int id=0;               //局部变量    setName("java");        //调用类中其他方法    return id+this.name;     //设置方法返回值}

局部变量的有效范围

局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。
局部变量的分类:    1)方法内部的变量    2)方法的形参    3)代码块中的变量,一对{}

Demo

class   ABC{          String info = null;           //成员变量               void  doWork(String name)     //局部变量          {                  System.out.println(x);                  int age;             //局部变量                         if(true) {                            int  num;      //局部变量                       }            }           {                            int  num;       //局部变量             }            String  x ;                     //成员变量}

变量的生命周期

◆局部变量: 在开始定义的位置开始,到紧跟着结束的花括号为止
◆成员变量,可以先使用后定义,局部变量必须先定义而后才能使用

★变量的作用域决定了变量的生命周期,作用域不同,生命周期就不一样。
★变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。

这里写图片描述

原创粉丝点击