面向对象
大纲
1. 对象的概念
万物皆对象 客观存在的事物都是对象
2.类
1)什么是类?
类定义了一种抽象的数据类型
类就是模板 确定对象将会拥有的特征(属性)和行为(方法)
2)类的特点
类就是对象的类型
具有相同属性和方法的一组对象的集合
3. 什么是对象的属性?
1)属性:对象具有的各种特征
2)每个对象的每个属性都拥有特定值
如:手机类
属性:屏幕尺寸、内存。。。
注:对象的属性拥有默认值,这个默认值与相应的类型对应
例如: int默认值为0,boolean默认值为false,引用类型默认值为null
4. 类的实例化对象
@Test
public void test01() {
// 实例化Dog这个类
// dog 是 Dog类实例化的对象
Dog dog = new Dog();
}
5. 对象的内存模型
问: dog01是否等于dog02?
public void test02() {
// 实例化Dog这个类
// dog 是 Dog类实例化的对象
Dog dog01 = new Dog();
Dog dog02 = new Dog();
com.lihaozhe.day16.bean.Dog@1eb5174b
com.lihaozhe.day16.bean.Dog@67080771
因为dog01和dog02在内存里边是两个不同的内存空间所以 不等于。
6.静态方法和非静态方法的调用
/**
* 静态方法
*/
public static void sleep() {
System.out.println("我在睡觉");
}
/**
* 静态方法
*/
public static void eat() {
System.out.println("我在吃饭");
sleep();
}
/**
* 非静态方法
*/
public void drink() {
System.out.println("我在喝水");
}
静态方法可以通过类名点(.)方法名的方式调用
@Test
public void test01() {
Person01.sleep();
}
非静态方法可以通过类的对象名点(.)方法名的方式调用
@Test
public void test02() {
Person01 person01 = new Person01();
person01.drink();
}
7.成员变量与局部变量
1). 概念
成员变量 : 在类中定义,用来描述对象将要有什么
没有赋值的成员变量有该数据类型的初始值
局部变量 : 在类的方法中定义,在方法中临时保存数据
2). 成员变量与局部变量的区别
a)作用域不同
-
-局部变量的作用域仅限于定义它的方法
fun01读取不到fun02
public void fun01() {
int a = 10;
System.out.println("fun01()中a的值 >>> " + a);
}
public void fun02() {
int a = 20;
System.out.println("fun02()中a的值 >>> " + a);
}
-
-成员变量的作用域在整个类内部都是可见的
fun04、fun05、fun06都可以读取count
public int count;
public void fun04() {
System.out.println("成员变量count的值 >>> " + count);
}
public void fun05() {
System.out.println("成员变量count的值 >>> " + count++);
}
public void fun06() {
System.out.println("成员变量count的值 >>> " + ++count);
}
b)初始值不同
* -成员变量有默认的初始值
count默认值为0
public int count;
public void fun04() {
System.out.println("成员变量count的值 >>> " + count);
}
public void fun05() {
System.out.println("成员变量count的值 >>> " + count++);
}
public void fun06() {
System.out.println("成员变量count的值 >>> " + ++count);
}
* -局部变量没有默认的初识值,必须自行设定初识值
设定a等于10
public void fun01() {
int a = 10;
System.out.println("fun01()中a的值 >>> " + a);
}
c)同名变量的不同
* -在同一个方法中,不允许有同名的局部变量
public void fun01() {
int a = 20;
int a = 10; //错误
System.out.println("fun01()中a的值 >>> " + a);
}
* -在不同的方法中,可以有同名的局部变量
fun01和fun02是两个方法所以可以有两个int a
public void fun01() {
int a = 10;
System.out.println("fun01()中a的值 >>> " + a);
}
public void fun02()