一.类与对象的定义

  • 类:对某一类事物的共性进行抽象的描述(如:动物,水果),是一个新的数据类型;
  • 对象:实际存在的属于某一类事物的具体个体,也称实例;(如:兔子,苹果)
    一个完整的类由成员属性(描述这个类的属性,也称成员变量)和成员方法(描述这个类的行为)。
    一个类可以无属性也无方法,但这样的类也无意义。

二.类的封装

封装指的是将某个对象的数据和方法组合在一个类中,即定义一个类,使用者可根据需求来实例化对象。
类定义的基本结构为:

public class Student{            //  【类修饰符】+class+类名
      //成员变量  【修饰符】+数据类型+变量名【=初始值】
      // 如果定义成员变量时未赋初值,系统会根据数据类型给定默认初始值
      int ID;                    //  声明成员变量:学号ID
      String name;               //  声明成员变量:名字name
      int age;                   //  声明成员变量:年龄age
      public String getInfor(){  //  定义成员方法:获取学生信息getInfor
      //成员方法  【修饰符】+返回值+数据类型+方法名(参数表)
      String infor;              
      info = "学号:"+ID+"姓名:"+name+"年龄:"+age;
      return infor;
      }
}

类修饰符:

类修饰符

说明

public

定义一个公共类,该类可被任何类访问

abstract

定义一个抽象类,该类不能被实例化 ,不能与final同时出现

final

定义一个最终类,该类不能被其他类继承,不能与abstract同时出现

缺省

该类 只有在同一个类中才可以访问

成员(变量/方法)修饰符:

成员(变量/方法)修饰符

说明

public

公共访问修饰符,该变量/方法可被其他任何类的方法访问

private

私有访问修饰符,该变量/方法只允许本类的方法访问

protected

保护访问修饰符,该变量/方法可被本类、子类及同一个包中的类访问

缺省

缺省访问修饰符,该变量/方法只允许被同一个包中的类访问

final

最终修饰符,该变量的值不可被更改/该方法不能被重载

static

静态修饰符,该变量属于这个类,被类的所有对象共享,该方法不需要实例化就可以使用

transient

临时修饰符,该变量在对象序列化时不被保存

volatile

易失修饰符,该变量可同时被几个线程控制和修改

abstract

抽象修饰符,该方法只有方法原型,没有方法实现,需在子类中实现

synchronize

同步修饰符,在多线程程序中,该修饰符用于在运行前,对它所属的方法加锁,以防止其他线程的访问,运行结束后解锁

native

本地修饰符,该方法的方法体是用其他语言在程序外部编写

java语言允许成员变量和成员方法有多个修饰符,但需要注意修饰符之前有互斥的情况,如abstract和final。
成员变量的默认初始值

数据类型

初始值

byte

0

short

0

int

0

long

0L

引用类型

null

float

0.0f

double

0.0

char

‘\0’

boolean

false

三.对象的创建与引用

对象是一个类实例化的结果,当其完成工作后,会被销毁,所占用的资源将被系统回收。
其实例化格式为:
类名
对象名 = new 类名();
如:
People p=new People(); new 一个对象将在堆内存上开辟一个空间进行存放;
创建完对象后,通过点访问来访问它的成员变量和成员方法:

对象名.成员变量;
对象名.成员方法(实参);

例如:

public class Test {
    public static void main(String [ ] args){
          Student s1=new Student();
          Student s2=new Student();
          System.out.println(s1.gteInfor());//打印操作
          System.out.println(s1.gteInfor());
          S1.ID=201901;   //修改成员变量:ID
          S2.ID=201905;   
          S1.name=”Tim”;  //修改成员变量:name
          S2.name=”Lily”;  
          S1.age=20;      //修改成员变量:age
          S2.age=21;    
          System.out.println( “修改后信息”+s1.gteInfor());
          System.out.println( “修改后信息”+s2.gteInfor());
   }
}
  • this引用
    类中的每个对象都在堆中拥有独立的存储空间,但成员方法只有一份,存放在方法区(内存)中,java通过this引用来使不同对象调用同一方法事返回格子对象的成员变量。
    this是系统资源,指向当前对象本身,只允许读不允许写,存储当前对象的地址。即,Student类的成员方法实际如下所示:
public String getInfor(){    
     String infor;
     infor=”学号:”+this.ID+”姓名:”+this.name+”年龄:”+this.age;
     return infor; 
}

this引用的常用用途:

  1. 在构造方法中调用其他方法时,只能使用this引用且必须位于构造方法的第一行;
  2. 构造方法的形参与类的成员变量名相同时,需用this引用来区分俩者;
public void setValue(char name){
       this.name=name;//name表示形参,this.name表示成员变量
}
  1. 在链式调用中返回对象本身。
  • 匿名对象
    在有些情况下,不需要声明对象名而直接创建一个对象后调用其成员方法,这种对象称为匿名对象;
Student s1=new Student();
System.out.println(s1.getInfor());
//俩句话可改写为:
System.out.println(new Student().getInfor());
//                   匿名对象

四.访问权限

访问权限

允许访问的类

public

任何类都可以

private

本类

缺省

本类、同一个包中的类

protected

本类、同一个包中的类、子类

五.方法重载

定义多个方法名相同但参数列表不同(参数个数,类型,或者参数的顺序不同)的方法。
如:

//添加俩个方法重载:
void setInfor(String name,int age){
      setName(name);
      setAge(age);
}
void setInfor(int age,int ID){
     setName(name);
     setID(ID);
}

六.构造方法

java语言使用构造方法在创建对象的时候为其赋值,其方法名必须与类名相同,且没有返回值,不可用void修饰。可以有参数也可以没有参数,有参数列表时,一般与类的成员变量相对应。
如:

//无参构造:(也称默认构造方法,java编译器自动生成)
Student(){}
//有参构造:
Student(int ID,String name,int age){
      this.ID=ID;
      this.name=name;
      this.age=age;
}