java面向对象之类与对象

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关键字创建对象。

猜你喜欢

转载自blog.csdn.net/m0_38045882/article/details/81544127
今日推荐