面向对象-类和对象

面向对象-类和对象
一、类和对象类1、实体类一类事物的抽象表现形式2、组成部分1属性成员变量这类事物都有什么。a、定义位置类中方法外。b、作用范围作用于当前类。c、定义格式数据类型 变量名d、成员变量有默认值。2行为成员方法这类事物能干什么定义方法时不需要使用static关键字。public class Person { String name; //成员变量 int age; //成员变量 //成员放方法 public void eat(){ System.out.println(我在吃东西); } }对象1、概述一类事物的具体体现。2、使用1导包 import 包名.类名如果两个类在同一个包下不需要导包在不同的包下需要导包。2创建对象想要使用哪个类中的成员就new哪个类的对象。类名 对象名 new 类名()Person person new Person();3调用成员成员变量成员方法想要使用哪个类中的成员就用哪个类中的对象去点成员。对象名.成员变量 值对象名.方法名() 调用无参无返回值方法对象名.方法名(参数) 调用有参无返回值方法数据类型 变量名 对象名.方法名() 调用无参有返回值方法数据类型 变量名 对象名.方法名(参数) 调用有参有返回值方法public static void main(String[] args) { Person p new Person(); p.name 李逵; p.age 23; System.out.println(p.name); //李逵 System.out.println(p.age); //23 p.eat(); //我在吃东西 }练习//定义手机类 public class Phone { String brand; String color; int prince; public void call(String name) { System.out.println(打电话给 name); } public String message() { return 发信息; } } public class Demo01 { public static void main(String[] args) { Phone p new Phone(); p.brand 苹果; p.color 黑色; System.out.println(p.brand);//苹果 p.call(张三);//打电话给张三 } }二、匿名对象1、所谓的匿名对象其实是没有等号左边的部分只有等好右边的部分(对象)//正常的 Person p new Person(); p.name zhang; //匿名的 new Person.name zhang;三、对象的内存解析一个对象的内存两个对象的内存两个对象指向同一个地址四、成员变量与局部变量的区别1、定义位置不同a、成员变量类中、方法外。b、局部变量定义在方法之外或者参数位置。2、初始化值不同a、成员变量有默认值可以直接使用。b、局部变量无默认值先定义再使用。3、作用范围不同a、成员变量作用于整个类。b、局部变量作用于自己所在的方法。4、内存位置不同a、成员变量在堆中跟着对象走。b、局部变量在栈中跟着方法走。5、生命周期不同a、成员变量随着对象的创建而产生随着对象的消失而消失。b、局部变量随着方法的调用而产生随着方法调用完毕而消失。public class Person { String name; //成员变量 int a ; public void eat(){ int i 10; //局部变量 int b; System.out.println(b);//报错局部变量没有默认值 System.out.println(a); System.out.println(i); System.out.println(name); } public void run(){ // System.out.println(i);// 报错是局部变量 } }练习public class MyDate { int year; int month; int day; } public class Citizen { String name; //MyDate类属于自定义类引用数据类型 //使用之前必须进行赋值 //怎么赋值使用new对象进行赋值 MyDate birthday; String idCoard; } public class Test { public static void main(String[] args) { Citizen citizen new Citizen(); citizen.name zhang; // citizen.birthday new MyDate(); //链式调用 citizen.birthday.month 2026; citizen.birthday.year 5; citizen.birthday.day 15; } }