本篇博客沿上次内容将讲到面向对象的基础知识,以下为本周学习java的笔记;
自己设计对象并且使用的方法:
在package中新建class;
语法:类名 a=new 类名;
a为定义的一个对象;
访问该对象的属性:
语法:a.属性名;
调用对象方法的语法:
a.方法名();
注意:
1.一个类可以有多个对象。
2.设计类的时候类名最好大写,有区分性;
3.一个java文件(新建的class)中可以有多个类,但是只能有一个是被Public
修饰的,该类还是文件名;
4.实际开发中还是建议一个代码文件只定义一个类;
想定义多个类在package中新建;
5.成员变量的完整定义格式是:修饰符 数据类型 变量名称;
(不需要初始化,存在默认值);
默认值规则:
byte short int long------0
double float-----0
boolean-----false
string等引用类型------null;
面向对象的内存运行机制:
先在方法区加载主函数
然后把main方法提到栈中执行
触碰到第一个类后,有对象,该对象为局部变量;
因此把该对象加载到栈中(目前栈中没有东西);
然后因为new出了个东西,开辟一块新的堆内存
空间来代表汽车对象;
该堆内存空间中会有类的属性,如:name,price,
但都是默认值;
堆内存中不会有成员方法,只有成员方法的地址指向
方法区的方法;
因为该堆内存空间有地址,即对象的地址复制给栈中的变量来
指向堆内存中的对象;
所以,你定义的一个对象如果直接输出它那输出的将会是它的地址;
若此时将对象中的一个属性赋值
该值将会从栈中的地址访问到堆中的属性;
若调用对象中的方法
会通过栈中变量的地址找到堆中的对象,再从对象中
方法的引用地址直接访问方法区中的成员方法;
图例所示:
如果两个变量指向同一个对象,那么更改其中一个变量的属性,另一个变量中的属性也会改变,如图例所示:
构造器:
(类似c++中的构造函数)
this关键字:
封装:
简单来说就是,对成员变量使用private来修饰。
并且为每个成员变量提供配套的get、set方法来暴露其取值和赋值;
标准JavaBean:
可以成为实体类,其对象可以在程序中封装数据;
书写要求:
成员变量用private修饰;
提供对应的set和get方法;
必须提供一个无参构造器(默认就有),有参构造器可写可不写;
如果写了有参构造器,无参构造器必须得再写一个;
在idea中,快捷写出getter和setter的方法:
光标处右键,然后点Generate,点开有点geteer和setter,选中成员变量,
按ok就可以生成了;
快捷写出有参构造器:
同样在Generate中,点开Constructor,选中成员;
快捷写出无参构造器:
同样在Generate中,点开Constructor,点击Select None;
关于成员变量和局部变量的区别这一小知识点:
补充一点:成员变量的作用范围不受限,谁和这个类有关谁就能用;
而局部变量的作用范围只在花括号{}中;
以上便为本周学习java所写出的博客,图片引用的是黑马程序员的网课截图。因为本周比较忙,所以只学到了继承,下次博客会讲完java中面向对象的继承以及多态等知识点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)