面向对象
面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。 面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事儿。
public static void main(String[] args){
int[] array ={ 10, 20, 30, 40, 50 };
//要求打印格式为:「10,20,30,40,50]
//使用面向过程,每一个步骤细节都要亲力亲为。
System.out.print("[");
for (int i = 0; i < array.length; i++) {
if(i==array.length-1){
//如果是最后一个元素
System.out.println(array[i]+"]");}
else { // 如果不是最后一个元素
System.out.print(array[i]+",");
}
}
System.out.println("==============");
//使用面向对象
//找一个JDK给我们提供好的Arrays类,
//其中有一个toString方法,直接就能把数组变成想要的格式的字符串
System.out.println(Arrays.toString(array));
}
什么是类
类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。 现实中,描述一类事物: 属性:就是该事物的状态信息。 行为:就是该事物能够做什么。 举例:小猫。 属性:名字、体重、年龄、颜色。行为:走、跑、叫。
什么是对象
。对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。 现实中,一类事物的一个实例:一只小猫。 举例:一只小猫。
类的定义格式
定义一个类,用来模拟“学生”事物。其中就有两个组成部分:
属性(是什么):
姓名
年龄
行为(能做什么):
吃饭
睡觉
学习 对应到Java的类当中: 成员变量(属性): String name; // 姓名
int age; // 年龄
成员方法(行为): public void eat() {} // 吃饭
public void sleep() {} // 睡觉
public void study() {} // 学习
public class Student {
// 成员变量
String name; // 姓名
int age; // 姓名
// 成员方法
public void eat() {
System.out.println("吃饭饭!");
}
public void sleep() {
System.out.println("睡觉觉!");
}
public void study() {
System.out.println("学习!");
}
注意事项: 1成员变量是直接定义在类当中的,在方法外边。 2.成员方法不要写static关键字。
对象的使用
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
1.导包:也就是指出需要使用的类,在什么位置。
import 包名称.类名称; import nitcast.day06.demo01.student; 对于和当前类属于同一个包的情况,可以省略导包语句不写。
2.创建,格式: 类名称对象名=new类名称();
Student stu=new Student();
3.使用,分为两种情况: 使用成员变量:对象名.成员变量名 使用成员方法:对象名.成员方法名(参数)
(也就是,想用谁,就用对象名点儿谁。)
public static void main(String[] args){
// 1.导包。
//我需要使用的Student类,和我自己Demo02Student位于同一个包下,所以省略导包语句不写
// 2.创建,格式:
//类名称对象名=new类名称();
//根据Student类,创建了一个名为stu的对象
Student stu=newStudent();
//3.使用其中的成员变量,格式://对象名.成员变量名
System.out.println(stu.name);// null
System.out.println(stu.age);//0
}
System.out.printin("=============");
//改变对象当中的成员变量数值内容
//将右侧的字符串,赋值交给stu对象当中的name成员变量
stu.name ="赵丽颖";
stu.age =18;
System.out.println(stu.name);// 赵丽颖
System.out.println(stu.age);//18
System.out.println("=============");
//4.使用对象的成员方法,格式:
//对象名.成员方法名()
stu.eat();//吃饭饭!
stu.sleep();//睡觉觉!
stu.study()://学习!
练习 手机模拟
定义一个类,用来模拟“手机”事物。
属性: | 行为: |
品牌 | 打电话 |
价格 | 发短信 |
颜色 |
对应到类当中:
成员变量(属性): | 成员方法(行为): |
---|---|
String brand; // 品牌 | public void call(stringwho){}//打电话 |
double price;//价格 | public void sendMessage(){}//群发短信 |
String color; // 颜色 |
类
public class Phone {
// 成员变量
String brand; // 品牌
double price;// 价格
String color;// 颜色
// 成员方法
public void call(string who){
System.out.println("给"+who+"打电话");
}
public void sendMessage() {
System.out.println("群发短信");
}
对象
public static void main(String[] args){
//根据Phone类,创建一个名为one的对象
//格式:类名称对象名=new类名称();
Phone one=new Phone();
System.out.println(one.brand);// null
System.out.println(one.price);// 0.0
System.out.println(one.color);// null
System.out.println("=========");
one.brand ="苹果";
one.price=8388.0;
one.color ="黑色";
System.out.println(one.brand);//苹果
System.out.println(one.price);//8388.0
System.out.println(one.color);//黑色
System.out.println("=========");
one.call(who:"乔布斯"); //给乔布斯打电话
one.sendMessage();//群发短信
}
对象的内存图
两个对象使用同一个方法的内存图
两个引用指向同一个对象的内存图
使用对象类型作为方法的参数
局部变重和成员变重
1定义的位置不一样【重点】局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用成员变量:整个类全都可以通用。 3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值成员变量:如果没有赋值,会有默认值,规则和数组一样
4.内存的位置不一样(了解)
局部变量:位于栈内存成员变量:位于堆内存 5.生命周期不一样(了解) 尼部变量:随着方法进栈而诞生,随着方法出栈而消失 成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
public class Demo01VariableDifference{
String name;// 成员变量
public void methodA() {
int num = 20; // 局部变量
System.out.println(num);
System.out.println(name);
public void methodB(int param){
//方法的参数就是局部变量
// 参数在方法调用的时候,必然会被赋值的。
System.out.println(param);
int age; // 局部变量
// System.out.println(age);//没赋值不能用
// System.out.println(num);// 错误写法!
System.out.println(name);
}
}
}