1、类与对象的理解:
类是对一类事物的描述,是抽象的,概念上的定义;对象是实际存在的该类事物的每个个体,因此也称之为实例。如果将对象比作汽车,那么类就好比汽车的设计图纸。所以面向对象程序设计的重点是类的设计,而不是对象的设计。类对事物的属性,也就是成员变量,操作属性的方法,也就是成员函数进行了封装,只要通过new关键字创建对象么就可以对对象的属性进行赋值,然后调用对象的方法进行各种操作,实现各种功能。这大概就是java面向对象三大特性之一即封装。
2、实例讲解:
package com.jwang.facetoobject;
public class Person
{
//定义一个成员变量
private int age;
//定义一个成员方法
public void shout()
{
System.out.println("my age is "+age);
//在一个类中的方法可以调用这个类中的其它方法
shout1();
}
public void shout1()
{
//局部变量必须赋初值才能使用
int age = -60;
//由于局部变量与成员变量同名,所以成员变量被覆盖,下面应该输出-60
System.out.println("my age is "+age);
//在局部变量和全局变量相同时,如果要使用或者操作成员变量,可以采用this.成员变量的方式使用或者操作成员变量
System.out.println("my age is "+this.age);
}
public void shout2()
{
}
//main方法为JVM内置的方法,不属于该类
public static void main(String [] args)
{
//通过new关键字来创建对象,new主要是分配堆内存
Person p1 = new Person();
Person p2 = new Person();
//给p1对象的属性赋值
p1.age = -30;
//通过对象的引用调用对象的方法
System.out.println("---------输出p1相关信息---------");
p1.shout();
System.out.println("---------输出p2相关信息---------");
p2.shout();
}
}
3、测试结果:

4、分析以及说明:
(1)类将属性(变量),方法(函数)封装在一起,供对象使用
(2)成员变量又可以理解为类中对象的属性。可以是基本数据类型,也可以是对象,集合,数组等
定义方式:private/public+数据类型+变量名;
一般系统会自动赋初值,所以定义时一般不会赋值,在对象调用时才对他赋值。成员变量相当于全局变量,按理说全局变量在使用前要赋初值,但java中jvm会对成员变量自动赋初值,如整形一般赋初值为0.
(3)方法又叫成员函数,是对象完成某一操作的一个方法。
定义方式:private/public+返回值类型+函数名(数据类型1 变量1,数据类型2 变量2....)
(4)如果方法中也定义了与成员变量同样的局部变量,则局部变量会覆盖全局变量,除非在方法内部使用this关键字
(5)同类中的方法可以直接访问其中的成员变量。也可以访问同类中的其他方法。
(6)对象的创建方式:类名+对象名=new+类名();eg:person pi=new preson();pi实际上是对象的引用句柄,或者称为引用变量,可以粗略当成就是一个对象。new关键字相当于分配堆内存的一个关键字。所以对象和数组一样都是被定义在堆内存中的。
(7)当一个对象被创建的时候,类中的成员变量会自动初始化,而方法中定义的局部变量必须认为初始化才可以使用。
(8)通过句柄来引用类中对象的属性和方法。引用句柄也可以看成是一个变量,他被定义在栈内存中,存放的是对象中变量的首地址。这样对象就可以通过(句柄.变量或方法)的方式来使用其属性和方法完成一系列功能。
(9)main函数/方法可以放在任何类中,但不属于此类的成员函数。main函数放在那一个类中,那个类就是启动运行类。
(10)对象存储内存分析:
因为P1和p2是两个对象,所以各自有各自的存储,如下图所示:
5、public及private关键字:
(1)使用说明:
public关键字可以修饰类,使用public修饰类时,类名要和源文件中的名称一致。并且一个源文件中只能有一个public修饰的类
public关键字可以修饰方法和属性,通过public修饰的属性和方法可以在其它类中调用,一般为了安全性考虑,类的属性都是private的,而方法是public的。提供get,set方法供外边的类来操作本类中的属性。
private一般用来修饰方法和属性,用private修饰的方法和属性只能在本类中使用和操作,不能在其它类中访问。
(2)编程例子:
package com.jwang.facetoobject;
public class People
{
//定义两个私有的成员变量
private String name ;
private int age;
//定义一个公有的成员变量
public String sex;
//定义一个公有的获取name的方法
public String getName()
{
return name;
}
//定义一个公有的设置name的方法
public void setName(String name)
{
this.name = name;
}
//定义一个公有的获取age的方法
public int getAge()
{
return age;
}
//定义一个公有的设置age的方法
public void setAge(int age)
{
this.age = age;
}
}
测试结果:
6、匿名对象:
new TestPeople().test();在上面的程序中创建了匿名对象,并调用test方法,匿名对象就是不需要申明对象的引用,而直接通过new关键字创建对象。