面向对象的思想概述
- 类和对象是面向对象的核心概念 万物皆对象
- 类是对一类事物的描述,是抽象的,概念上的定义.
- 对象是实际存在的该类事物的每一个个体,因而也称为实例(instance)
- 万物皆对象
- 类:抽象概念的人 对象:实实在在的某个人
- 面向对象程序的设计的重点是 类的设计
- 类的设计 , 就是类的成员的设计
java类及类的成员
一.对象的创建如何使用
1.属性:对应类中的成员变量(属性=成员变量=field=域,字段)
2.行为:就是类中的成员方法(方法=成员方法=函数=method)
二 类和对象的使用
1.类是引用数据类型,所以需要通过new 关键字来创建
person类:(创建类,设计类的成员)
class Person { // 属性 String name; int age = 1; boolean isMale; // 方法 public void eat() { System.out.println("吃饭!!"); } public void sleep() { System.out.println("睡觉"); } public void talk(String language) { System.out.println("我们可以用" + language + "进行交流"); } }
2.再创建一个Java的测试类 PersonTest (创建类的对象)
//测试类
public class PersonTest { public static void main(String[] args) { // 创建Person 类的对象 Person p1 = new Person(); // 调用对象的结构(属性,方法) // 调用属性 对象.属性 p1.name = "Tom"; System.out.println(p1.name); // 调用方法 对象.方法 p1.eat(); p1.sleep(); p1.talk("chinese"); } }
3.通过"对象.属性"或者"对象.方法"调用对象的结构
注意:
1.每new 一次就创建了另一个对象 每一个对象都独立的拥有一套类的属性(属性 非static),意味着修改一个对象的属性a,不影响另一个对象的属性a的值.
Person p2 = new Person(); System.out.println(p2.name); //null 初始有默认值
2.
Person p3 = p1; //将对象p1的地址值 赋给变量p3 导致p1,p3指向堆空间中的同一个位置
System.out.println(p3.name);
p3.age = 10;
System.out.println(p1.age);
三 类中属性(成员变量) vs局部变量
1.相同点:
-
-
-
- 定义变量的格式 数据类型 变量名 =变量值
- 先声明 后使用
- 变量都有其作用域
-
-
2.不同点:
-
-
-
- 在类中声明的位置不同
- 属性:直接定义在类的一对括号内.
- 局部变量:声明在方法内,方法参数,代码块内,构造器内部的的变量
- 关于权限修饰符的不同
- 属性:可以在声明属性的时候 指明其权限,使用权限修饰符
- 局部变量 不可以使用权限修饰符
- 默认初始化值得情况
- 属性:类的属性 根据其类型,都有默认初始化值
- 整形(byte,short,int,long) 0
- 浮点型(float,double) 0.0
- 字符型(char) 0(或者 u0000)
- 布尔型(boolean) false
- 引用数据类型(类,接口,数组) null
- 局部变量在调用是时候进行赋值即可.
- 属性:类的属性 根据其类型,都有默认初始化值
- 内存中加载得位置
- 属性:加载到堆空间(非 static)
- 局部变量:加载到栈空间
- 在类中声明的位置不同
-
-
对象的内存解析:
内存解析:
1. 堆:存放对象的实例.
栈:存储局部变量
方法区:类的信息,常量,静态变量,即时编译器编译后的代码.
2. 上述例子的内存解析: