Java 类

  面向过程的结构化程序设计的弊端:1.缺乏对数据的封装;2.数据和方法的分离。

1.面向对象

1)什么是抽象数据类型

  将不同类型的数据的集合组成一个整体用来描述一种新的事物。

2)什么是类

  • 类定义了一种抽象数据类型
  • 类不但定义了抽象数据类型的组成(成员变量),同时还定义了可以对该类型实施的操作(方法)

3)成员变量和方法

  类中可以包含成员变量和方法;

  • 成员变量:所有对象所共有的属性/特征
  • 方法:所有对象所共有的行为

案例1:创建一个员工类

Emp{
	String name;
	char gender;
	int age;
	double salary;
}

   在这个示例中,定义了Emp类型的组成,其中(name、gender、age、salary)这些变量成为成员变量。name用来存放员工的姓名、gender用来存放员工的性别、age用来存放员工的年龄、salary用来存放员工的工资。

  定义了Emp类后,提高了代码的模块化以及代码的复用性,但依然存在问题,如:打印信息的方法只能针对Emp数据操作,属于Emp自身的方法,需要实现数据和方法(对该类型数据的操作)的统一。

4)成员变量初始化

  • 对象创建后,其成员变量可以按照默认的方式初始化
  • 初始化对象成员变量时,其默认值的规则如下表
成员变量类型 默认初始值
byte、short、int、long、float、double 0                                   
boolean型 false
char型 /u0000
引用类型 null

 

 

 

 

 

5)定义类的方法

  方法是用于描述对象的行为,封装对象的功能。

一个包含成员变量和方法的类语法:

class 类名{

  成员变量类型  成员变量;

  修饰词  返回值类型  方法名(参数列表){

  方法体;

  }

  ...

}

6)创建对象

  • 类定义完成后,可以使用new关键字创建对象,创建对象的过程通常成为实例化
  • new运算的语法:new 类名();

案例2:创建一个员工对象

public class Test {
	public static void main(String[] args) {
		Emp e = new Emp();
	}
}

 

7)引用类型变量

  • 为了能够对实例化的对象进行访问控制,需要使用一个特殊的变量——引用(如上例中的e)
  • 引用类型变量可以存放该类对象的地址信息,通常成为“指向该类的对象”;当一个引用类型变量指向该类的对象时,就可以通过这个变量对对象实施访问。
  • 除8种基本类型之外,用类、接口、数组等声明的变量都称之为引用类型变量,简称“引用”。

8)访问对象的成员变量、调用方法

  可以通过引用访问对象的成员变量或调用方法

public class Test {
	public static void main(String[] args) {
		Emp e = new Emp();
		e.name = "Tom";
		e.gender = '男';
		e.age = 29;
		e.salary = 5000;
	}
}

9)引用类型变量的赋值

  • 引用类型变量存储的是对象的地址信息,相同类型的引用类型变量之间也可以相互赋值
  • 引用类型变量之间的复制不会创建新的对象,但有可能会使两个以上的引用指向同一个对象

 

案例3:引用类型之间赋值

public class Test {
	public static void main(String[] args) {
		Emp e = new Emp();
		e.name = "Tom";
		e.gender = '男';
		e.age = 29;
		e.salary = 5000;
		System.out.println(e.name);  //Tom
		Emp f = e;
		f.name = "Jerry";
		System.out.println(e.name);  //Jerry
	}
}

  由上例可以发现,引用类型之间的赋值与基本类型之间的赋值不一样,引用类型之间赋值(画“=”号)指向同一个对象,对一个引用的修改会影响另一个引用。

 

10)null

  • 对于引用类型变量,可以对其赋值为null,null的含义为“空”,表示还没有指向任何对象
  • 当一个引用的值为null时,如果通过引用访问对象成员变量或者调用方法是不合逻辑的,此时会产生NullPointerException空指针异常

 

 

案例4:创建一个引用赋值为null

public class Test {
	public static void main(String[] args) {
		Emp e = null;
		e.name = "Tom";
		System.out.println(e.name);
	}
}

/*
运行结果:
Exception in thread "main" java.lang.NullPointerException
	at test.Test.main(Test.java:8)
*/

案例5:类的演示

要求:创建一个员工类,定义成员变量包含name、gender、age、salary, 定义方法打印员工的信息,创建两个员工对象并打印出信息。

public class Emp {
	//定义成员变量
	String name;
	char gender;
	int age;
	double salary;

	public  void empPrint(){   //定义方法打印员工信息
		System.out.println("姓名:"+name+"性别:"+gender+"年龄:"+age+"薪资:"+salary); 
	}
	
	public static void main(String[] args) {
		Emp e = new Emp();
		e.name = "Tom";
		e.gender = '男';
		e.age = 29;
		e.salary = 5000;
		e.empPrint();       //调用方法打印员工信息
		
		Emp ee = new Emp();
		ee.name = "Jerry";
		ee.gender = '女';
		ee.age = 25;
		ee.salary = 6000;
		ee.empPrint();
	}
}


/*
运行结果:
姓名:Tom性别:男年龄:29薪资:5000.0
姓名:Jerry性别:女年龄:25薪资:6000.0
*/

  

 

原文地址:https://www.cnblogs.com/jmwm/p/6920697.html