一、面向对象概述
- 面向对象
- 是一种编程思想,是发展到一定阶段后产生的
- 我们有程序的编写者、执行者转换为调用者、指挥者
- 面向过程
- 类
- 一组具有相同或者相似属性、行为事务的统称
- 是对象的抽象
- 对象
二、类的创建
- 创建一个类需要关注的点
- 类名
- 属性
- 方法
- 一群对象所共有的行为
- 编写成方法
- 目前不用加static
package com.qf.cls;
/**
* 创建Dog类
* 抽取狗子的特征,定义为属性
* 抽取狗子的行为,定义为方法
* @author Dushine2008
*
*/
public class Dog {
// 属性--品种-哈士奇、年龄-3、名字-道哥、颜色-黑白
String breed;
int age;
String name;
String color;
// 方法
public void eat(String food) {
System.out.println("狗子喜欢吃:" + food);
}
public void sleep(int hour) {
System.out.println("我们家的狗子每天睡觉时长是" + hour);
}
}
三、对象的创建
- 类是对象的模板,可以使用类创建出无数个具体的对象
- 类名 对象名 = new 类名(参数列表);
package com.qf.cls;
public class DogTest {
public static void main(String[] args) {
Dog dog = new Dog();
// 调用方法
dog.eat("骨头");
dog.sleep(8);
// 调用属性,属性如果没有提前赋值,得到的是默认值
int age = dog.age;
System.out.println(age);
// 给dog的属性赋值
dog.breed = "哈士奇";
dog.name = "二哈";
dog.age = 3;
dog.color = "黑白";
// 调用dog的属性
System.out.println("狗子的品种是:" + dog.breed);
System.out.println("狗子的名字是:" + dog.name);
System.out.println("狗子的年龄是:" + dog.age);
System.out.println("狗子的颜色是:" + dog.color);
}
}
四、创建多个对象
package com.qf.cls;
public class CarTest {
public static void main(String[] args) {
// 创建对象
Car car = new Car();
// 给对象的属性赋值
car.brand = "比亚迪*唐";
// 调用对象的方法
car.start("摇把");
car.run(200);
Car jili = new Car();
jili.brand = "cheey";
jili.maxSpeed = 220;
jili.start("一键启动");
jili.run(120);
}
}
/**
* Car类
* @author Dushine2008
*
*/
class Car{
// 属性
String brand;
String color;
int price;
int maxSpeed;
// 方法
public void start(String func) {
System.out.println(brand + "的车子启动的方式是:" + func);
}
public void run(int speed) {
System.out.println("车子目前的速度是:" + speed);
}
}
创建单个对象的过程

创建多个对象的过程

五、局部变量和实例变量
类型 |
局部变量 |
实例变量 |
定义位置 |
方法内部 |
类中方法外 |
存储位置 |
栈内存 |
堆内存 |
默认值 |
无,必须先赋值在使用 |
有默认值,和数据类型有关 |
作用范围 |
整个方法 |
整个类 |
生命周期 |
创建到方法执行结束 |
随着对象创建而创建,对象消失而消失 |
命名冲突 |
方法中不能存在重名变量 |
可以和局部变量重名,局部变量优先级高 |
六、实例方法
- 创建对象后可以使用对象调用的方法
- 定在类中方法外
- 每一个方法都是独立的,不能书写在其他方法中
- 实例方法不能使用static修饰
6.1 案例
package com.qf.cls;
/**
* 学生类
* 定义了学生的属性
* 定义了sayHi和show方法
* @author Dushine2008
*
*/
public class Student {
// 属性
String name;
int age;
String gender;
double score;
/**
* 见面打招呼的方法
* @param word 打招呼的内容
*/
public void sayHi(String word) {
System.out.println("我是一个好学生,我们见面都会说:" + word);
}
/**
* 展示自己信息的方法
*/
public void show() {
System.out.println("我的名字是:" + name + ",我的今年" + age + ",我是" + gender + ",我这次考试的成绩是:" + score);
}
}
package com.qf.cls;
public class TestStudent {
public static void main(String[] args) {
// 创建学生对象stu01
Student stu01 = new Student();
stu01.name = "张飞";
stu01.gender = "汉子";
stu01.age = 16;
stu01.score = 33;
stu01.sayHi("我乃燕人张翼德");
stu01.show();
// 创建学生对象stu02
Student stu02 = new Student();
stu02.name = "关羽";
stu02.gender = "壮士";
stu02.age = 17;
stu02.score = 88;
stu02.sayHi("打死你个鳖孙!!!");
stu02.show();
}
}
七、方法的重载