类的定义:

  • 类的定义包括两部分:类声明和类体
  • 类是java程序的基本要素
  • 定义类的格式:image
    • 修饰符可以是public 或空: public代表即使不同包也能访问该类;而空代表只能该类只能在同一个包内访问。
    • 类体的内容包括变量的生命和方法的定义。【所以单独的定义是错误的,只能声明并同时定义】
      • image
      • image

 

对象实例化

  • 类的实例化就是创建一个对象:
    • 创建对象:类名 变量名 =new 类名()【类名()可以传入一些参数来初始化对象,由类的同名方法(构造方法,下面讲)定义能传入什么参数】
      • image
      • 匿名对象:简单来说就是没有变量名的实例化,直接使用new 类名()来执行操作,由于没有变量名来特异的标记一片内存空间,所以匿名对象一般只使用一次,比如new Dog().hello();
    • 调用方法或变量:对于实例方法或变量的可以直接使用对象来调用;而对于静态方法或变量,既可以使用对象,也可以使用类来调用。
      • image
      • image

 

 

复制代码
class Dog{
    String name;
    int foot=4;
    Dog(){//这是一个构造函数
        this.name="旺财";
    }
    void hello() {
        System.out.println("hello,this is a dog");
    }
    static void static_hello() {
        System.out.println("hello,this is a dog too");
    }


}

public class Demo {

    public static void main(String args[]) {
        
        Dog d=new Dog();
        System.out.println(d.foot);//4
        d.hello();//hello,this is a dog
        d.static_hello();//hello,this is a dog too
        Dog.static_hello();//hello,this is a dog too
        
    }
}
复制代码

 


成员变量:

 

成员变量的有效范围

  • 成员变量在整个类范围内有效,与变量声明的位置无关。方法中的局部变量从声明它的位置开始生效,并且只在方法体内有效。
  • 当局部变量跟成员变量同名时,如果想特别的使用成员变量,可以使用“this.变量名”
  • 成员变量有默认值,而局部变量没有默认值。

 

成员变量的赋值:

  • 可以使用构造函数来对一些成员变量初始化
  • 如果成员变量不是私有的,也可以直接取得变量名来赋值,比如dog.age=18

 


静态变量、方法与实例变量、方法:

 

根据变量、方法是否有static修饰可以分为实例变量,实例方法和静态变量(类变量),静态方法(类方法)

 

  • 静态变量,静态方法:

    • 被static修饰的成员的特点:

      • 随着类的加载而加载,优先于对象存在,静态成员内存位于方法区

      • 被所有对象所用享【所以可称为类变量或类方法】

      • 可以直接类名调用

      • 静态方法只能访问静态成员

      • 静态方法中不可以写this,super关键字

 

  • 实例变量、实例方法:

    • 实例变量、实例方法是对象的变量和方法,对象操作变量或方法也只是操作自己的变量或方法,不会影响其他对象。

 

实例变量\方法跟静态变量\方法的区别好比:“泰迪狗类”比如有一个共有属性“狗种类名”,那么这个属性应该是所有泰迪狗都有的,并且是泰迪狗共享的,如果某一天人类想改泰迪狗的种类名称,那么应该是所有泰迪狗都改的(静态的);而每一只泰迪狗都有自己的主人,这是由每一只狗自身决定的,所以这是特有属性,即使这只狗换了主人,也不会影响别的狗。(实例的)