面向对象指的是Java中一切都是对象,要想在Java中使用对象那么首先咱们得有类,因为类是模板,对象是在模板的基础上创建的,如果没有类那么也就没有对象之说了。
- 类的定义
类在Java中使用的是class关键字来完成定义的。
语法:
class 类名称{ 数据类型 属性 ; ------->申明成员变量(属性) ….
public 返回值的数据类型 方法名称(参数1,参数2…){ --------->定义方法 程序语句 ; [return 表达式;] } } |
上面的语法中体现出了类的组成,类是由属性和方法组成的。
- 属性---->前面创建的变量---->int a=23;
- 方法---->就是普通方法的创建(方法的返回值和方法的名称的编写)
案例:定义一个类表示人
package com.sram.entity; public class Person {//这个类表示的是人---->模板---->创建人的对象的模板 //属性 public String name;//表示人的姓名 public int age;//表示人的年龄 public char sex;//表示人的性别 //方法 public void sleep(){ System.out.println("我是人,我需要睡觉"); } public void eat(){ System.out.println("我是人,需要吃饭"); } } |
上面的类定义了人的类,里面有三个属性两个方法。
类创建好了,那么咱们就可以通过对象调用类中的属性和方法来了。
2.类中属性和方法的调用
类定义好以后,类中的属性和方法只能通过类对应的对象来调用,所以现在需要创建对象。
对象的创建
使用new创建类的一个对象
1、创建一个数组----->int[] arr=new int[3]; |
public static void main(String[] args){ //创建Person类的对象 Person per=new Person();//使用new关键字 System.out.println(per);//输出对象 } |
com.sram.entity.Person@15db9742 |
上面的创建对象的方式使用new关键字,之前咱们学习数组的时候说new关键字主要是用来开辟堆内存的,在这里也是一样的,Person per=new Person();这行代码执行后也是开辟了堆栈内存,堆内存中存放的是Person类中的属性和方法,栈内存中存放的是per这个对象的名称。另外在以后的学习中如果看到了@XXXXXX这类型的内容的话一般指的是引用数据类型的对象。
使用对象
对象创建完成后就可以调用类中的属性和方法了。
语法:
使用对象:使用“.”进行以下操作: 调用类中的属性:对象名.属性 调用类的方法:对象名.方法名() |
案例:
使用对象调用类中的属性:
public static void main(String[] args){ //创建Person类的对象 Person per=new Person();//使用new关键字 //调用Person类中的属性 System.out.println(per.name); per.name="张三";//给per对象的name属性赋值 System.out.println(per.name); } |
null 张三 |
使用对象调用类中的方法:
public static void main(String[] args){ //创建Person类的对象 Person per=new Person();//使用new关键字 //调用类中的方法 per.sleep(); per.eat(); } |
我是人,我需要睡觉 我是人,需要吃饭 |
3.内存的划分
之前讲解的内容是通过类创建对象,使用对象调用类中的方法和属性。其实类是Java中的引用数据类型,所以既然是引用数据类型那么肯定有堆栈内存的划分。
直接创建对象:
Person per=new Person(); |
|
上面的执行的代码其实就是将对象创建完成,在创建对象的时候使用new关键字,看到new关键字就肯定有堆内存的开辟。
给属性赋值:
Person per=new Person(); per.name="张三"; per.age=30; |
上面给属性赋值了,对象给属性赋值的过程其实就是改变堆内存属性的值。