面向对象:强调具备了功能的对象,以类/对象(关注名词)为最小单位,考虑谁来做
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); } }
类中属性的使用属性(成员变量) 和 局部变量 相同: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); }