面向对象-类和对象
数据存储方面:
**变量:**只能存储一个 如果内容多了 存储起来需要定义n个变量 麻烦
**数组:**可以存储一组相同数据类型的数据。
数据类型相同:
如果用数组存储一个人的信息/比较丰富的信息的话,不太方便。
例如:吃货联盟中存储订单和菜品信息。
纵向数组:我们定义了好多个数组,认为不同数组中,索引相同的数据,都是同一个信息。
升级:不方便,所以想存储更多元化的数据,我们这阶段学习对象,它可以存储数据。
**长度不可变:**未来第三阶段要学习集合,它可以解决这问题。
对象:
编码方面:(程序的架构)
**面向过程开发:**想让它干嘛,你就写对应的代码。你在写吃货联盟的时候,需要展示菜品或订单信息,你就将那一堆的代码,放那儿就可以了。(代码无法重用,扩展性差,可维护性差,阅读性差)
面向方法/功能/函数开发: 本阶段我们会将以前重复的代码,按功能切分,抽取成为一个方法。以后直接调用方法即可快速实现功能。
面向对象开发(OOP): (陈鑫卖煎饼->升职加薪->迎娶高富帅开酒店)
1. 掌握类和对象的关系
什么是对象?
万物皆对象
。你身边的任何一个,你可以叫的出名或者可以单独区分出来的一个实体,它就是对象。
**对象:**描述客观事物的一个实体,它由一组属性和方法构成。
**属性(特征):**描述一个对象的信息。
例如:姓名、年龄、性别、游戏中的法防、物防、法功、家族、帮派、称号…
**方法(操作):**描述一个对象的行为。
例如:猫吃鱼、狗吃肉、奥特曼专打小怪兽。
什么是类?
**类:**人类、鸟类、非人类,分类…
由一组具有相同属性
(不是指属性值一样,而是指属性名,例如:学生对象都有姓名、年龄等属性)和相同行为
的对象中抽取出来的一个抽象的概念
(分类)。
**类和对象的关系:**类是一个模板,对象是类的一个具体实例。
程序中对象和类
**编程:**将现实生活中的场景以计算机指令的形式描述出来。
Java是一个不
完全面向对象
的编程语言。(因为Java中有基本数据类型 byte short int long float double boolean char…)。
所有的Java程序都是以类为组织单元。
2. 掌握如何定义类(对象的模板)
类是一个引用数据类型。
一个类并不是必须要有main方法
!main方法是程序的入口!一个程序只要有一个main方法作为程序入口即可!(大门只有一个!)
public class 类名{
// 一组属性
// 一组方法
}
public class HelloWorld{
public static void main(String[] args){
syso(xxx);
}
}
/**
* 学生类 是学生对象的一个模板
* @author Charles7c
* 2019年1月9日 下午2:57:22
*/
public class Student {
// 一组属性/成员变量/[实例(对象)]变量
/** 姓名 */
public String name;
/** 年龄 */
public int age;
/** 体重 */
public double weight;
/** 学号 */
public int id;
// 一组方法/成员方法
/** 学习 */
public void study() {
System.out.println(name+"在学习!");
}
/** 自我介绍 */
public void printInfo() {
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("体重:"+weight);
System.out.println("学号:"+id);
}
}
在Eclipse中,Ctrl+Shift+T 可以全局搜索类。
注意事项:
1. 一个.java文件中可以定义多个类,但是只能有一个类被public修饰,被public修饰的类,它的类名和文件名保持一致。(在无特殊情况一个.java文件只写一个类)
2. 一个类并不是必须要有main方法,同样一个类也不是必须要有一堆属性和一堆方法,这些属性和方法到时候是根据我们的需求决定。
3. 定义类的信息时候也要注意好对齐和规范。
3. 掌握如何定义对象
语法:类名 对象名 = new 类名();
public class Test {
public static void main(String[] args) {
// 创建对象
// Scanner scanner = new Scanner(System.in);
// 创建学生对象
Student stu = new Student();
// 创建老师对象
Teacher teacher = new Teacher();
// 给对象的属性赋值(存储一些信息)
stu.name = "布俊彪";
stu.age = 18;
stu.id = 700;
stu.weight = 180;
// 给老师信息赋值
teacher.name = "邢老师";
teacher.major = "COT";
teacher.gender = '女';
teacher.teachAge = 30;
// 使用属性值
System.out.println(teacher.name);
// 调用方法
stu.printInfo();
stu.study();
System.out.println("----------------------");
teacher.printInfo();
}
}
4. 熟悉基本的方法定义(下一章才是重点)
**方法:**就是一个代码的组合,是一个功能。
// 通过用户名和密码获取用户信息
getUserByUsernameAndPassword()
初识方法的基本的语法:
权限修饰符 返回值类型 方法名(){
// 方法体
}
今天我们学习的方法 没有返回值类型,没有返回值类型的话 定义为void
(空、无效的)
方法调用的注意事项:
1. 同一个类中(不包含static情况),调用方法只需要直接写`方法名();`即可。同一个类中,你都看到它了,调用一下很简单。
2. 不同的类中(不包含static情况),方法间相互调用,需要先创建对象,然后`对象名.方法名();`不同类中,你不创建对象,我怎么知道你是谁的方法。