java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算机程序。这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
洗衣服:
区别:
特点:
面向对象的语言中,包含了三大基本特征,即封装、继承和多态。
面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。
是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
现实中,描述一类事物:
举例:小猫。
属性:名字、体重、年龄、颜色。
行为:走、跑、叫。
是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友),必然具备该类事物的属性和行为。
现实中,一类事物的一个实例:一只小猫。
举例:一只小猫。
属性:tom、5kg、2years、yellow。
行为:溜墙根走、蹦磁的跑、喵喵叫。
属性:事物的状态信息。
行为:事物能够做什么。
Java中用class描述事物也是如此
成员变量:对应事物的属性
成员方法:对应事物的行为类的定义格式
定义类:就是定义类的成员,包括成员变量和成员方法。
成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
成员方法:和以前定义方法几乎是一样的。只不过把static去掉,static的作用在面向对象后面课程中再详细讲解。
public class ClassName {
// 成员变量
// 成员方法
}
代码:
package cn.luis.demo1;
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("学习!");
}
}
创建对象
类名 对象名 = new 类名();
使用对象访问类中的成员:
对象名.成员变量名;
对象名.成员方法名();
通常情况下,一个类不能直接使用,需要根据类创建一个对象,才能使用。
import 包名称.类名称;
import cn.itcast,day06.demo01.Student;
对于和当前类属于同一个包的情况,可以省略导包语句不写。
类名称 对象名 = new 类名称();
Student stu = new Student();
变量就是用来保存内容的,new出来的都在堆中(成员变量直接赋初始值),对象名称就是变量名称
使用,分两种情况:
使用成员变量:对象名.成员变量名();
使用成员方法:对象名.成员方法名(参数);
也就是,想用谁,就用–对象名.谁
若成员变量没有赋值,那么将会有一个默认值,规则和数组相同。
代码:
package cn.luis.demo1;
public class Demo01Student {
public static void main(String[] args) {
//1.导包
//2.创建
//根据Student类创建了一个名为stu的对象
Student stu = new Student();
//3.使用其中的成员变量,格式:
//对象名.成员变量名
System.out.println(stu.name); // null
System.out.println(stu.age); // 0
System.out.println("================");
//改变对象当中的成员变量数值内容
//将右侧的字符串,赋值交给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();
}
}
数据类型 | 默认值 | |
---|---|---|
基本类型 | 整数 byte、short、int、long |
0 |
浮点数 float、double |
0.0 | |
字符 char |
‘\u0000’ | |
布尔 boolean |
false | |
引用类型 | 数组、类、接口 | null |
代码:
public class Demo01VariableDifference {
String name; //成员变量
public void methodA() {
int num = 20; //局部变量
System.out.println(num);
System.out.println(name);
}
public void methodB() {
int age = 20; //局部变量
System.out.println(age);
System.out.println(name);
}
public void methodC(int param) {
//参数在方法调用的时候,必然会被赋值的。
System.out.println(param);
}
public static void main(String[] args) {
}
}
package cn.luis.demo2;
public class Demo04PhoneParam {
public static void main(String[] args) {
Phone one = new Phone();
one.brand = "小米";
one.price = 2333.3;
one.color = "白色";
//当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的地址值
method(one); //传进去的是地址值 0x666
}
// 带有static的方法,不用创建对象就能直接调用
public static void method(Phone p) { // p : 0x666
System.out.println(p.brand); //0x666.brand
System.out.println(p.price);
System.out.println(p.color);
}
}
package cn.luis.demo2;
public class Demo05PhoneReturn {
public static void main(String[] args) {
// 赋值调用
// 要使用Phone类型接收,对应起来
// p1 = getPhone() = 0x666
Phone p1 = getPhone(); // main方法没有创建对象,p1对象是从方法的返回值当中接收的
System.out.println(p1.brand); // 0x666.brand
System.out.println(p1.price);
System.out.println(p1.color);
}
public static Phone getPhone() {
Phone p = new Phone();
p.brand = "苹果";
p.price = 8888.88;
p.color = "玫瑰金";
// 谁调用我,我就把结果交给谁
return p; //将地址值返回给调用处 0x666 (在上面)
}
}
自定义Phone类
package cn.luis.demo2;
/*
定义一个类,用来模拟“手机”事物
属性:品牌、价格、颜色
行为:打电话、发短信
对应到类当中
成员变量(属性)
String brand;
double price;
String color;
成员方法(行为)
public void call(who) {}
public void sendmessage() {}
*/
public class Phone {
String brand;
double price;
String color;
public void call(String who) {
System.out.println("给" + who + "打电话!");
}
public void sendmessage() {
System.out.println("群发短信!");
}
}