Java—面向对象—类和对象
面向对象思想:强调对象解决问题。角色:指挥者和调度者。
面向过程思想:强调的是过程。 角色:执行者。
Java面向对象的设计思想。万物皆对象。
一、类和对象
Java中使用类来描述事物对象。
-
事物(特征):
1. 属性特征:状态 2. 行为特征:功能
-
类:对事物的属性和行为特征的封装描述,类是抽象的描述。
-
类的创建:对事物属性和行为的抽象描述(对类的封装):
- 成员变量(属性);
- 成员方法(功能);
-
格式:
-
修饰符 class 类名{
//成员属性
格式 变量的声明格式雷同——>数据类型 变量名;
//成员功能
格式 同语法方法格式(去掉static)——>数据类型 方法名(参数列表){方法体;}
}
class student{ String name;//姓名 String ID;//学号 String sex;//性别 int age;//年龄 double weight;//体重 public void study(){ this.name=name; System.out.println(name+"正在学习"); } public void sloop(){ System.out.println("正在睡觉"); } public double getWeight(){ return weight; } }
-
-
类和对象:
- 类:抽象的,对事物的描述;
- 对象:具体的实实在在存在的实体事物。
- 类中的属性和行为,对应的对象都因该具备。
-
-
类和对象的使用:
java中通过类创建对象来使用:通过new关键词来使用。
-
对象的创建:
student yp=new student();
-
对象的使用;
成员属性的使用:引用变量.成员属性
成员方法的使用:引用变量.成员方法名
通过点运算符进行调用;
yp.getWeight()
-
对象赋值:
对象名.属性=value;
yp.name="zangsan";
-
局部变量和成员变量
-
局部变量:定义在方法中、参数上、代码中的变量称为局部变量;
-
成员变量:定义在类的里面方法的外面;
-
差异:
-
定义位置不同
-
生命周期不同
-
运行时所处位置不同
-
使用方式不同:局部变量必须有初始值才可以使用
-
-
-
对象的构造方法:
-
在java中通过类创建对象都要经过构造方法来创造对象实例;构造方法可以有多种,称为方法重载;
-
在类中如果没有自定义构造方法,则系统会给我们附送一个无参的构造方法;若自定义了构造方法则系统不在附送无参构造方法。
-
意义:创建对象实例,并完成对象实例的初始化;
-
构造方法特点:
-
构造方法没有返回值。
-
必须和类名同名。
-
构造方法可以自定义
/*全参构造方法*/ public student(String name,String ID,String sex,int age,double weight){ this.name=name;//this代表当前类的实例对象 this.age=age; this.ID=ID; this.sex=sex; this.weight=weight; }
-
-
this:
-
代表本类对象
-
当局部变量名称和成员变量同名是使用this来进行区分。
-
-
-
构造方法创建对象过程:
- 加载主类public修饰的类;
- main方法入栈
- 执行第一条语句。加载类到方法区。——>student yp=new student() 加载student.class到方法区;
- 在栈区分配Student yp对象变量的存储空间;
- 在对中分配对象的物理空间,同时Student()构造方法入栈;
- 默认初始化,并构造初始化方法出栈(弹栈)对象初始化完毕
- 将堆中对象的物理地址付给栈中的对象yp;
-
注意:对象在初始化出来之后都会有默认话的值;
package JavaSE; import java.lang.reflect.Array; import java.util.Arrays; import java.util.Scanner; public class objectDemo { public static void main(String[] args) { Scanner scan=new Scanner(System.in); /*student yp=new student(); System.out.println("请输入学生姓名:"); yp.name="李四"; System.out.println("学生姓名:"+yp.name); System.out.println();*/ System.out.println("======================================================="); student gao=new student("王五","21330220000","男",23,120); System.out.print("请输入要查询的信息:"); String name=scan.toString(); System.out.println("学生姓名:"+gao.name); System.out.println("学生学号:"+gao.ID); System.out.println("学生性别:"+gao.sex); System.out.println("学生年龄:"+gao.age); System.out.println("学生姓名:"+gao.weight); } }
package JavaSE; public class object { } class student{ String name;//姓名 String ID;//学号 String sex;//性别 int age;//年龄 double weight;//体重 public void study(){ System.out.println(name+"正在学习"); } public void sloop(){ System.out.println(name+"正在睡觉"); } public double getWeight(){ return weight; } /*无参构造方法*/ /* public sdtuent(){ }*/ /*全参构造方法*/ public student(String name,String ID,String sex,int age,double weight){ this.name=name;//this代表当前类的实例对象 this.age=age; this.ID=ID; this.sex=sex; this.weight=weight; } }
-