面向对象思想的概述
· 面向过程:
需要实现一个过程时,每个步骤都要亲力亲为,详细处理每个细节。
· 面向对象:
需要实现一个过程时,不关心具体的步骤,找一个具有该功能的人,帮助完成此功能。
面向过程是:(类似于洗衣服的完整步骤,强调步骤)
运行:要求打印格式为[10,20, 30,40,50]
public class Name{
public static void main(String[] args){
int[] array = {10, 20, 30, 40, 50};
System.out.println("[");
for(int i = 0; i < array.length; i++){
//i = 0....4 4是最后一个数字,array[4]就是打破的最后一个数字
if(i == array.length - 1){
//第一种情况是少数的那个//
System.out.println(array[i] + "]");
}else{
System.out.println(array[i] + ",");
}
}
}
面向对象:(类似于全自动洗衣机,强调对象)
//找一个JDK给我们提供好Array类【JDK】
//其中又一个toString方法,直接把字符串变成想要的形式;
System.out.println(Arrays.toString(array));
出现--->import java.util.Arrays;
面向对象的语言中,包含了三大基本特征,即封装【本章】、继承、多态【以后章节】;
1.2 类和对象【public class】
引言:对象,比如桌子、椅子、同学、老师等,桌椅是办公用品,师生是人类;
类
· 定义:一组相关属性和行为的集合,是一类事物的模版,使用属性和行为来形容这一类食物。
现实中,描述一类食物:
·· 属性:该事物的状态信息;(名字、体重、颜色)
·· 行为:该事物能做什么;(走、跑、跳)
对象
· 定义:是一类事物的具体体现,对象是类的一个实例,具备该类事物的属性和行为。
· 举例:一只小猫
类和对象的关系
· 类是对一类事物的描述,是抽象的(图纸:属性、功能)
· 对象是对一类事物的实例,是具体的(一个手机:可以被使用的具体对象)
· 类是对象的模版,对象是类的实体。
1.3 类的定义
现实中的图纸 有属性和行为
java中也是如此,类包含:
· 成员变量:对应事物的属性(大小尺寸)
· 成员方法:对应事物的行为(跑跳)
类的定义格式
public class ClassName {
//成员变量:属性
//成员方法:行为
}
· 定义类: 定义类的成员,包括成员变量和成员方法。
· 成员变量:和以前定义变量相同,但是位置发生变化,在类中,方法外【变量里面并没有常量 变量可以轮流代表好多次常量】
· 成员方法:和以前定义方法几乎一样,但把static去掉;
· 备注:java class用来创造一个类
举例:
//定义一个类,模拟学生
//属性(成员变量:是什么):姓名 年龄
//String name//姓名; int age;//年龄
//行为(成员方法:能做什么):吃饭 睡觉
//public void eat(){}
public class Student {
String name;
int age;
//性质+名称
public void eat(){
System.out.println("吃饭饭");
}
public void study(){
System.out.println("睡觉觉");
}
}
注意事项:
- 成员变量直接定义在方法中,在方法外边
- 成员方法不要static 关键字
- 一般情况下,一个类不能直接使用,需要根据类创建一个对象,才能使用
1.4 对象的创建和使用
一般情况下,一个类不能直接使用,需要根据类创建一个对象,才能使用。
-
导包:指出需要使用的类的位置;
import 包名称.类名称;
import cn.itcast.day06.demo01.Student;
对于和当前类属于同一个包的情况,可以省略导包语句不写; -
创建 格式:
类名称 对象名 = new 类名称();
Student stu = new Student(); -
使用 分为两种情况:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
(想用谁,就用对象名.谁)
public class Demo02Student{
public static void main(String[] args){
//根据student 类 创建了一个stu对象;
Student stu = new Student();
System.out.println(stu.name);//null
System,out.println(stu.age);//0
//如果没有进行赋值,会有一个默认值
//赋值:
stu.name = "小美女";
stu.age = 18;
System.out.println(stu.name);
System,out.println(stu.age);
stu.eat()
stu.study()
}
}
练习:手机
定义一个类,用来模拟事物“手机”
//属性:颜色 大小 价格
//功能:打电话 发短信
public class Phone{
String color;
double size;
double price;
public void call(String who){
System.out.println("打电话");
};
public void sendMessage(){
System.out.println("发短信");
};
}
public class Demo01Phone{
public static void main(String[] args){
Phone pho = new Phone();
pho.color = "粉粉";
pho.size = 5.5;
pho.price = 100;
System.out.println(pho.color);
System,out.println(pho.color);
System,out.println(pho.price);
pho.call(String who:"小帅哥");
pho.sendMessage();
}
}
一个对象的内存图(103)
stack里运行main–>对变量重新赋值–>左边对象—>对象地址—>heap堆当中的成员变量—>重新对成员变量赋值—>成员方法–>method area方法区找方法–>进stack把call方法堆在main方法上–>运行此方法—>stack里面main里新量赋值到call方法中
方法区(method area):
有两个类class
Phone.class(
//成员变量
String brand;
double price;
String color;
//成员方法
void call(String who)
void sendMessage()
)
Demo01PhoneOne.class(
main(String[] args)
)
进入栈(Stack)空间,先从main方法开始,
有两个方法
main(String[] args):变量(等号左边的)
一个对象:Phone one
堆(Heap)(素材)
等号右边:new Phone()
存放新的成员变量(方法区当中的成员变量)+赋默认值String= null double=0.0
成员方法 :存放地址