Java面向对象1
面向对象:强调具备了功能的对象,以类/对象(关注名词)为最小单位,考虑谁来做
面向对象思想(执行者—>指挥者)
- 根据问题,选择问题所针对的现实世界的实体
- 从实体中找解决问题的属性和功能,形成概念世界中的类
- 抽象实体用计算机语言描述,形成计算机中的类的定义(借助程序语言,百类构造成计算机能识别处理的数据结构)
- 将类实例转换成计算机世界中的对象。对象是计算机世界中解决问题的最终工具
Java语言基本元素
类与对象的使用
1.创建类,设计类的成员
2.创建类的对象
3.通过“对象.属性”或是“对象.方法”调用对象的结构
属性=成员变量=field=域,字段
方法=成员方法=函数=method
创建类的对象=类的实例化=实例化类
类与对象
类:对一类事物的描述,是抽象的,概念上的定义
对象:实际存在的该类事物的每个个体,因而也称为实例
- 对象的功能取决于类的设计(类的成员)
实操
//测试类
public class Demo01 {
public static void main(String[] args) {
//创建person的对象1
Person p1 = new Person();
/* 调用对象的结构 :属性,方法 */
//调用属性:“对象.属性”
p1.name = "Tom";
p1.isMale = true;
System.out.println(p1.name);
//调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("chinese");
/*=============================================================*/
//对象2
Person p2 = new Person();
System.out.println(p2.name);
/*============================================================*/
Person p3 = p1;//p1对象的地址赋值给p3,导致p1,p3指向了堆空间中同一对象的实体
System.out.println(p3.name);
p3.age = 10;
System.out.println(p1.age);
}
}
//类
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);
}
}
内存解析
- 堆:存放对象实例(new都在堆里)
- 栈:存储局部变量
- 方法区:存储类信息,常量,静态变量,即时编译器编译后的代码
属性和局部变量
类中属性的使用属性(成员变量) 和 局部变量
相同:1.定义格式:类型+名字=值
2.先声明后使用
3.有自己的作用域
不同 1.类中声明的位置不同
属性:直接定义在类的一对{}中
局部变量:声明在方法内,方法形参,代码 块,构造器形参,构造器内部
2.关于权限修饰符的不同
属性:在声明时,指明其权限,使用权限修饰符(常用private,public,却省(不写),protected)
局部变量:不可以使用权限修饰符
默认初始化值属性:
类的属性,根据类型来默认
整型:0
浮点型:0.0
字符型:0或是’\u0000‘
布尔型:false
引用数据类型(类,数组,接口):null
局部变量:没有初始化值
一定要显式赋值
注:形参在调用时再赋值
加载的位置
属性:堆(非static)
局部变量:栈
public static void main(String[] args) {
User u1 = new User();
System.out.println(u1.name);
System.out.println(u1.age);
u1.talk("中文");
u1.eat();
}
}
class User{
//属性
String name;
int age;
public void talk(String language) {//形参:language
System.out.println("我们使用" + language + "进行交流");
}
public void eat(){
String food = "包子";//局部
System.out.println(food);
}