day11
1.初识面相对象
1.1 类和对象的理解
类
* 类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
* 简单理解:类就是对现实事物的一种描述
类的组成
* 属性:指事物的特征,例如:手机事物(品牌,价格,尺寸)
* 行为:指事物能执行的操作,例如:手机事物(打电话,发短信)
类和对象的关系
* 类:类是对现实生活中一类具有共同属性和行为的事物的抽象
* 对象:是能够看得到摸的着的真实存在的实体
* 简单理解:*类是对事物的一种描述,对象则为具体存在的事物*
1.2 类的定义
类的组成是由属性和行为两部分组成
* 属性:在类中通过成员变量来体现(类中方法外的变量)
* 行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
类的定义步骤:
①定义类
②编写类的成员变量
③编写类的成员方法
public class 类名 {
// 成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
…
// 成员方法
方法1;
方法2;
}
1.3 对象的使用
创建对象的格式:
* 类名 对象名 = new 类名();
调用成员的格式:
* 对象名.成员变量
* 对象名.成员方法();
1.4 案例
需求:创建人类的对象,并操作对象
分析:
人类 - Person
属性:name、sex、age
方法:eat、sleep
步骤:
1.创建Person类,属性、方法
2.创建Person类的对象
(先创建Person,再在主方法中声明…)
public class Test01 {
public static void main(String[] args) {
//创建对象
Person p = new Person();//p--引用对象
//设置属性
p.name = "巴得伟";
p.sex = '男';
p.age = 23;
//获取属性
System.out.println(p.name);
System.out.println(p.sex);
System.out.println(p.age);
//调用成员方法
//注意:成员方法使用引用对象,调用对象
p.eat();
p.sleep();
//调用静态方法
//注意:静态方法使用类名,调用
Person.method();
}
}
1.4 成员变量和局部变量的区别
类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
内存中位置不同:成员变量(堆内存)局部变量(栈内存)
生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用
注:
对象在堆上还是栈上不仅取决于其是基本数据类型还是引用数据类型,还取决于其定义的位置,如果一个基本数据类型是成员变量,那么也存在堆上。
总结:方法内的是局部变量(栈里面),方法外的是成员变量(堆里面)
案例:
public class Person {
/** 成员变量
成员属性/成员变量
注意:属于对象的变量,系统会赋默认值,该类所有的成员方法都能使用该变量
成员变量的默认值:
整数类型:0
类型:0.0
字符类型:' '
布尔类型:false
引用类型:null
*/
String name;
char sex;
int age;
//成员方法
public void eat(){
//局部变量:方法里的变量,必须初始化后,才能使用,其作用域在方法内
int i = 100;
System.out.println("吃饭饭 -- " + i);
}
public void sleep(){
System.out.println("睡觉觉");
}
//静态方法
//注意:静态方法不能使用成员变量
public static void method(){
System.out.println("静态方法");
}
内存图:
总结
1.使用到类,JVM会把该类的class文件加载到方法区中,扫描该类的字面值常量,将字面值常量加载到常量池中
2.new对象会在堆中开辟空间,用于存储对象的成员变量,系统会赋默认值
3.引用中存储的是对象在堆中的地址 ( Person p=new Person(); p -->就是引用 )
4.调用方法,就会在栈中开辟空间,该空间存放方法的局部变量,方法执行完毕该空间会立刻回收
5.class文件中存放了该类所有的信息(属性,成员方法,静态方法)
简答题
1.面向对象和面向过程的区别
面向过程 :面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资
源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix 等一般采用
面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展。
面向对象 :面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所
以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,面向对象性能比面向过程
低。
总结
多个对象在堆内存中,都有不同的内存划分,成员变量存储在各自的内存区域中,成员方法多个对象共用的一份文章来源:https://www.toymoban.com/news/detail-796173.html
方法没有实例化,对象才有实例化,eg: Person p=new Person();//这个就是实例化文章来源地址https://www.toymoban.com/news/detail-796173.html
到了这里,关于学习JavaEE的日子 day11 初识面相对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!