类和对象

类:类是模子,确定对象将会拥有的特征(属性)和行为(方法)。

类的特点:类是对象的类型(对象是具体的数据信息),是具有相同属性和方法的一组对象的集合。

属性:对象具有的各种特征(有什么、特定值),每个对象的每个属性都拥有特定值。

方法:对象执行的操作(能干什么)

  • 定义一个类
//1、定义一个类
public class demoClass {
    //2、属性  (成员变量) 有什么
    String name = "bob";
    int age = 22;
    //3、方法  干什么
    void getName(){
        System.out.println("我的名字是bob");
    }
    void getAge(){
        System.out.println("我的年龄是22");
    }
}
  • 如何使用类( 使用对象的步骤)
//1.创建对象
    demoClass hello = new demoClass();
//2.使用对象
    hello.getName();
  • 成员变量和局部变量
    1、成员变量:在类中定义, 作用域为整个方法内部;初始值默认为0
    2、局部变量:在类的方法中定义,在方法中临时保存证据; 作用域仅限于本方法;定义时要赋值(没有初始值),否则报错;不同方法内可有同名局部变量
    3、两个变量名相同时,会取局部变量中的值
  • 构造方法
    1、构造方法没有返回值,名称与类名相同;
    2、有参数的构造方法的功能就是创建实例同时给成员变量初始化(参数列表的参数是给成员变量初始化用的);
    3、当然也可以在构造方法中进行输出操作;也可在构造方法中进行一些判断,判断参数是否合理,若不合理还可以进行更多的骚操作;
    4、当类中无定义构造方法时,系统默认添加无参的构造方法,当定义了构造方法时,无论是带参的还是不带参的,都不会自动添加无参的构造方法,所以若在类中定义了带参的构造方法,最好也把无参的构造方法写上;
    栗子
**创建类**
package com.test;
public class Telphone {
    public Telphone(){
        System.out.println("输出了无参数的构造方法");
    }
    public Telphone(int num1 ,int num2){
        System.out.println( "有参数的构造方法,值为" +  num1 + "和" + num2 );
    }
}

**入口类**
package com.test;
public class testTel {
    public static void main(String [] args){
        int a1 = 21;
        int a2 = 22;
        // 五参数的构造方法
        Telphone hello = new Telphone();  //输出了无参数的构造方法
        //有参数的构造方法
        Telphone hello2 = new Telphone(a1,a2); // 有参数的构造方法,值为21和22
    }
}
  • 静态方法
    Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。我们也可以创建static 静态变量让 该类所有的对象共用。
    栗子
public class staticVarFun {
    //定义一个静态变量
    static String  firstName = "bob";
    //定义一个静态方法
    public static String getName(String name){
        return name;
    }
    //入口方法
    public static void main(String [] args){
        //类名直接调用静态变量
        System.out.println(staticVarFun.firstName);  //bob
        //创建类的对象
        staticVarFun hello = new staticVarFun();
        //使用对象名的形式修改静态变量的值
        hello.firstName = "polly";
        System.out.println( hello.firstName); //polly
        System.out.println( staticVarFun.firstName); //polly
        // 调用静态方法getName 
        String allScore = getName( staticVarFun.firstName);
        System.out.println( allScore); //polly
    }
}
  • static 静态初始化块 (静态初始化块只在类加载时执行,且只会执行一次)

在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
栗子

public class initializeStatic {
    String name;  //申明变量name
    String sex;//申明变量sex
    static int age;//申明静态变量age 

    public initializeStatic(){   // 构造方法
        name = "汤姆";
    }
    {
        sex = "男";
    }
    static {
        age = 24;
    }
    public void info(){
        System.out.println("姓名:" + name +" 性别:" + sex + " 年龄:" + age);
    }
    //入口方法
    public static void main(String [] args){
        // 创建对象
        initializeStatic hello = new initializeStatic();
        // 调用对象的info方法
        hello.info();  // 姓名:汤姆 性别:男 年龄:24
    }
}