面向对象(上)01
Java面向对象学习的三条主线: (第4 - 6章)
1. Java类和类的成员 : 属性, 方法, 构造器; 代码块, 内部类.
1. 面向对象的三大特征 : 封装性, 继承性, 多态性 , (抽象性) .
1. 其他关键字 : this , super , static , final , abstract , interface , package , import 等.
Java语言基本元素 : 类和对象
- 类(Class)和对象(Object)时面向对象的核心概念
类是对一类事物的描述, 是抽象的 , 概念上的定义.
对象是实际存在的该类事物的每个个体 , 因而有称为实例(instance).
- "万事万物皆对象"
177 . 类的结构:属性和方法
设计类就是设计类的成员.
- 属性 : Field , 属性 , 成员变量 , 域 , 字段 ;
- 行为 : Method , (成员)方法 , 函数 ;
178 . 类和对象的创建
类个对象的使用(面向对象思想落地的实现)
- 创建类 , 设计类的成员
- 创建类的对象
- 通过"对象.属性"或"对象.方法"调用对象的结构
类的创建 创建属性和方法
class Person{
//属性
String name;
int age = 18;
boolean isMale ;
//方法
public void eat(){
System.out.println("人可以吃饭");
}
public void talk(String language){
System.out.println("人说话,使用的是" + language );
}
}
对象的创建 调用属性和方法
在测试类中
Person p1 = new Person();
//变量数据类型 变量名 变量值
Scanner scan = new Scanner(System.in);
创建类的对象 = 类的实例化 = 实例化类
调用对象的结构
public class PersonTest{
public static void main (String [] args){
//创建类的对象
Person p1 = new Person();
//调用属性: 对象.属性
p1.name = "Tom"; //赋值
p1.isMale = true;
System.out.println(p1.name);//调用
//调用方法: 对象.方法
p1.eat();
p1.talk("Chinese");
}
}
180 . 类的多个对象的关系
如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性.(非static的), 意味着 : 如果我们修改一个对象的属性a, 则不影响另外一个对象属性a的值 .
181 . 对象的内存解析
主要内存区域
- 虚拟机栈 : 即 ' 栈 ' , Stack , 用于存储局部变量. 特点:先进后出.
- 堆 : Heap , 唯一的目的就是存放对象实例.
- 方法区 : Method Area , 用于存储已被虚拟机加载的类信息,常量,静态变量,即使编译器编译的代码等数据.
其中变量p3不是new出来的结构, 在heap中没有实体, 只是p1把地址值赋值给p3 , p1 和 p3 同时指向 heap中的这个实体, 都可以对其结构进行调用等操作.(有点像文件的两个快捷方式)
182 . 属性与局部变量的对比
类中属性的使用
属性(成员变量) vs 局部变量
- 相同点 :
1.1 定义变量的格式 : 数据类型 变量名 = 变量值
1.2 先声明 , 后使用
1.3 变量都有其对应的作用域
- 不同点
2.1 在类中声明的位置不同
属性 : 直接定义在类的一对{ } 内
局部变量 : 声明在方法内, 方法形参, 代码块内, 构造器形参, 构造器内部的变量
2.2 关于权限修饰符的不同
属性 : 可在声明时, 知名其权限, 使用权限修饰符.
常用的权限修饰符 : private , public , 缺省 , protected--封装性
局部变量 : 不可以使用权限修饰符.
2.3 默认初始化值的情况
属性 : 类的属性, 根据其类型, 都有默认初始值.
整型(byte, short, int, long) : 0
浮点型(float, double) : 0.0
字符型(char) : 0 (或'\u0000')
布尔型(boolean) : false
引用数据类型(类, 数组, 接口) : null
局部变量 : 没有默认初始值
意味着,我们在调用局部变量之前,一定要显示赋值.
特别的 : 形参在调用时, 我们赋值即可.
2.4 在内存中加载的位置 :
属性 : 加载到堆空间中 (非static)
局部变量 : 加载到栈空间
标签:01,对象,局部变量,调用,面向对象,p1,属性 From: https://www.cnblogs.com/lg369/p/16784779.html