java面向对象
java面向对象
-
如何创建对象:
类名 对象名 = new 类名();
-
使用成员方法:
对象名.方法名(参数)
对象名.属性(可以赋值)
-
成员变量和局部变量的区别
- 在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
- 在内存中的位置不同
成员变量:在堆内存
局部变量:在栈内存
- 生命周期不同
成员变量:随着对象创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
- 初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用
- 注意事项
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的就是就近原则
-
匿名对象
没有名字的对象
举例:正常创建对象时:Student s = new Student();
创建匿名对象时:new Student();
-
应用场景:
- 调用方法,只调用一次方法的时候 new Student().show();
好处:匿名对象调用完毕就是垃圾,可以被垃圾回收器回收
- 匿名对象可以作为实际参数传递
-
-
构造方法
作用:给对象的数据进行初始化
-
格式:(public Students (参数。。。){ })
- 方法名与类名相同
- 没有返回值类型,连void都没有
- 没有具体的返回值
-
注意事项:
- 如果没有给出构造方法,系统会自动提供一个无参的构造方法
- 如果我们提供了构造方法(无论是有参还是无参的),系统就都不提供构造方法了(无参也不提供了)
- 建议自己给出无参构造方法
给成员变量赋值由两种方法:
- 定义函数setXxx()
- 使用构造方法
类的组成:成员变量、构造方法、成员方法
-
初始化过程
一个类的初始化过程
-
成员变量的初始化
默认初始化
显示初始化
构造方法初始化
子类父类的初始化过程(分层初始化)
先进行父类初始化,然后进行子类初始化
-
创建对象时内存分配
-
变量什么时候定义为成员变量:
如果这个变量是用来描述这个类的信息的,那么,该变量就应该定义为成员变量
-
变量到底定义在哪里好:
变量的范围越小越好,因为能及时的被回收
-
static关键字
静态变量和成员变量的区别
-
代码块
在java中,用{}括起来的的代码被称为代码块
根据其位置和声明的不同,可以分为
局部代码块:局部位置,用于限定变量的生命周期
-
构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法前,都会先执行构造代码块
作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化
-
静态代码块:在类中的成员位置,用{}括起来,用static修饰
作用:一般是对类进行初始化
-
静态代码块,构造代码块,构造方法的执行顺序?
静态代码块–构造代码块–构造方法
静态代码块:只执行一次
构造代码块:每次调用构造方法都执行
-
继承时,静态代码块,构造代码块,构造方法的执行顺序
public class ExtendsTest { public static void main(String[] args) { Zi z=new Zi(); } } class Zi extends Fu{ static{ System.out.println("静态代码块Zi"); } { System.out.println("构造代码块Zi"); } public Zi(){ System.out.println("构造方法Zi"); } } class Fu { static{ System.out.println("静态代码块Fu"); } { System.out.println("构造代码块Fu"); } public Fu(){ System.out.println("构造方法Fu"); } }
运行结果
静态代码块Fu 静态代码块Zi 构造代码块Fu 构造方法Fu 构造代码块Zi 构造方法Zi
下一篇: Java语言与面向对象的程序设计
推荐阅读
-
Android中利用C++处理Bitmap对象的实现方法
-
js中Array对象的常用遍历方法详解
-
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
-
Vue使用watch监听一个对象中的属性的实现方法
-
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
-
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
-
Java编程实现生成给定范围内不重复随机数的方法小结
-
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
-
Java 中分形图的几种方法详解
-
用DOM实现文章采集--通过jquery语法式的方法采集指定对象的文本