一、类的引入
1、数据的存储
在没有类之前我们通过变量和数组来存储数据:
1)用变量来存储学生信息:
//第一个学生的信息
String s1name = "张白";
int s1age = 18;
String s1gender = "女";
//第二个学生的信息
String s2name = "李明";
int s2age = 19;
String s2gender = "男";
我们发现用单独变量来存储数据不利于数据的管理,我们这里是用三个变量将学生的
信息拆解了,如果学生数目比较多管理起来很不方便。
2)用数组来存储学生信息
//第一个学生的信息
String s1 [] = {"张白","18","女"};
//第二个学生的信息
String s2 [] = {"李明","19","男"};
用数组存储信息比起用单个变量来说要方便,但是用数组存储有三个问题:
1、无法体现数据类型,我们只能用一种数据类型表示所有数据
2、只能通过数组下标获取数据,变量名和内容对应关系不明确
3、无法体现行为
因此使用这两种方法不利于数据的管理,而且效率很低,所以引入了类与对象;
Java设计者引入 类与对象(OOP),根本原因就是现有技术不能完美解决新的需求
3)使用类来存储数据
public class Object01 {
public static void main(String[] args) {
//实例化一个学生,即创建一个学生对象
Stu s1 = new Stu(); //new Stu() 创建一个学生
//这个语句可以理解为创建一个学生然后赋给s1,s1就是一个对象
Stu s2 = new Stu();
s1.name = "张白";
s1.age = 18;
s1.gender = "女";
s1.weight = 110.10;
s2.name = "李明";
s2.age = 19;
s2.gender = "男";
s2.weight = 120.20;
System.out.println("第一个学生的信息是"+s1.name+s1.age+s1.gender+s1.weight);
System.out.println("第一个学生的信息是"+s2.name+s2.age+s2.gender+s2.weight);
}
}
class Stu{
//属性
String name;
int age;
String gender;
double weight; //在这里可以很方便的创建属性
}
new Stu() 是真正的对象空间,它是真正的对象。s1指向对象,我们通过s1来找到真正的对象,所以把s1也叫对象引用
二、类与对象
1、类与对象的关系
类可以描述现实事物,通常说类是一类相同特性现实事物的模板
类具有的功能对象就会具有,对象的功能取决于类怎么设计,设计类就是设计类的成员;
常见的类的成员有:
1、属性:对应类中的成员变量
2、方法:对应类中的成员方法
学生有姓名、身高、体重等属性,有学习、踢球、跑步等行为
调用类中的属性或方法需要创建对象调用
2、对象的主要组成
对象主要由属性和行为构成
我们把学生的所有属性、行为提取出来形成一个学生类,这个学生类也是一种数据类型;
类似于int --整型,我们可以存储整数,这是Java提供的,而 类 是我们根据自己的需求自定义的数据类型。
int 是整型,它可以存储整数如10,20等具体的数
类也是一种数据类型,那我们也可以针对学生类定义具体的学生,这个具体的学生实例就是对象
3、属性
属性也称成员变量,它是类的一个组成部分;
属性一般是基本数据类型(八种),也可以是引用类型(对象、数组)
1、属性的定义语法同变量,实例: 访问修饰符 属性类型 属性名;
访问修饰符:控制属性的访问范围,四种访问修饰符分别为public、private、protected、default(什么都没有)
2、属性的定义类型可以为任意类型,包含基本数据类型(byte、short、int、long、float、double、char、boolean)和引用类型(对象、数组)
3、属性如果不赋值则有默认值,规则和数组一致
byte --0 int --0 short --0 long --0 float --0.0 double --0.0
char -- \u000 boolean -- false String -- null
public class Object02 {
public static void main(String[] args) {
Person p = new Person();
System.out.print("输出个人信息:");
System.out.println("name="+p.name+" "+"age="+p.age+" "+"gender="+p.gender);
}
}
class Person{
//属性
String name;
int age;
String gender;
}
控制台输出:
输出个人信息:name=null age=0 gender=null
4、对象的创建
对象的创建分为两种:
//先声明,再创建
Stu s1;
s1 =new Stu();
//直接创建
Stu s1 = new Stu();
对象是计算机根据类 在内存创建的一个存储空间,从存储数据的角路理解:
一个变量存储一个数据
一组相同数据类型的数据使用数组存储
不同数据类型的数据使用对象存储
访问属性基本语法:
对象名.属性名 s1.name