一、类
类可以看成是创建对象的模板,它描述一类对象的行为和状态。创建对象也叫类的实例化。类必须先定义才能使用。
通过下面一个简单的类来理解下Java中类的定义:
public class Dog { //Dog类的名字 String name; // 成员变量name int age; static int time=0; //类变量 void hungry(){ System.out.println("主人,我饿了"); } void sleeping(){ int t = 0; //局部变量 System.out.println("主人,我睡了"); } }
一个类可以包含以下类型变量:
一个类可以拥有多个方法,方法可以表示类的行为,在上面的例子中:hungry()和sleeping()都是Dog类的方法。
构造方法
在类的实例化过程中构造方法会自动执行,它主要在实例化过程中做一些初始化的工作。
每个类都有构造方法,如果没有显式地为类定义构造方法,Java编译器会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。
构造方法的名称必须与类同名,一个类可以有多个构造方法,并且没有返回值。
下面是一个构造方法示例:
public class Dog { //Dog类的名字 String name; // 成员变量name int age; static int time=0; //类变量 public Dog(){ //无参构造方法 System.out.println("i am dog"); } Dog(String name1, int age1){ //有参构造方法 name = name1; age = age1; System.out.println("感谢主人领养了我"); } void hungry(){ //普通方法,要有返回类型,如void,int System.out.println("主人,我饿了"); } public static void main(String arg[]){ // 创建对象时传递的参数要与构造方法参数列表对应 Dog myDog = new Dog("小王", 5); } }
对象
对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
Dog myDog; // 声明一个对象 myDog = new Dog("小王", 8); // 实例化 //也可以这样写,声名的同时进行初始化 Dog myDog = new Dog("小王", 8);
static
Java 中被 static 修饰的成员称为静态成员或类成员变量
使用 static 可以修饰变量、方法和代码块。
public class HelloWorld { // 定义静态变量,保存班级名称 static String className = "JAVA开发一班"; public static void main(String[] args) { // 访问静态变量,输出班级名称 System.out.println(HelloWorld.className); } }
静态方法
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。
1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量.
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
初始化块
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
public class HelloWorld { String name; // 声明变量name String sex; // 声明变量sex static int age;// 声明静态变量age // 构造方法 public HelloWorld() { System.out.println("通过构造方法初始化name"); name = "tom"; } // 初始化块 { System.out.println("通过初始化块初始化sex"); sex = "男"; } // 静态初始化块 static { System.out.println("通过静态初始化块初始化age"); age = 20; } public void show() { System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age); } public static void main(String[] args) { // 创建对象 HelloWorld hello = new HelloWorld(); // 调用对象的show方法 hello.show(); } }
原文:https://www.cnblogs.com/lisen10/p/10830994.html