面向对象(Object Oriented)是一种思想,将数据和方法作为整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
面向过程
侧重步骤
面向对象
侧重模块(炒饭和盖饭)
优点:维护简单,可拓展性,可重用性,降低耦合
类是某一类对象的抽象,对象才是一个具体的实体.比如人就是一个类,那张三这个人就是对象,是一个具体的实体
类就是一种数据结构,而对象是某种类型的数据结构在内存中的具体表示
类定义标准和模板,而对象就是符合这个标准的个体
什么时候使用静态变量,什么时候使用成员变量
静态变量是类级别的,对象无关,是所有对象都一致的
成员变量是对象级别的
1 对应类加载入静态区
2 new 堆内存创建内存空间,把类中的成员属性放到内存空间中
3 执行构造方法,对堆内存空间中的属性初始化,执行完弹栈
4 把堆内存地址返回调用处
每个对象空间分为3块
1 数据区域 成员变量
2 头部 hash值
3 类型: 静态区类文件的空间引用
JVM特性
跨平台,多线程,自动垃圾回收,面向对象
垃圾:没有更多的引用指向
面向对象特性
继承性,封装性,多态性,抽象
对象的使用方法
1 创建对象
语法: 类名 对象名 = new 类名();
2 调用对象的属性和方法
语法: 对象名.属性名 对象名.方法名
空指针异常
空指针是运行时异常,编译是不报错,一般因为程序员粗心导致
System.out.println();中谁可能报空指针异常
分析:
System是类,不会报空指针异常,println()是方法不会报,所有只有可能是out是空
javaBean就是实体类
一个标准的javaBean包含
一个无参的构造方法,私有的成员变量,set和get方法,且必须是一个公共类
编译器的功能:
把java文件编译成.class文件
简称语法结构是否合法
帮我们把不规范的代码补全
构造方法:
语法: [权限修饰符] 类名(参数列表){方法体}
作用:创建当前类的实例化对象,并初始化成员属性
注意:如果我们没有定义构造方法则默认有一个公共的无参构造(public 类名(){})一旦我们指定了构造方法,则默认的无参构造就没有了,所以一般我们需要指定构造方法的时候,要需要写一个无参构造
构造方法重载
可以根据需求,编写多个构造方法,方法名相同,参数列表不同(类型,数量)
构造和成员方法同名,因为构造方法没有返回值类型
this是每个对象中保存自身内存地址的一个引用类型的成员变量
this就表示这个对象
只能出现在成员方法和构造方法中,不能出现在静态方法中
作用:
1.用在成员方法/构造方法中,用来区分同名的成员变量和局部变量, this.xxx
区分静态变量和局部变量:类名
区分成员变量和局部变量:this
2.用在构造方法中,重载调用当前类的其他构造方法
this(参数); 必须写在构造方法的第一行
例子:
class MyDate{ int year; int month; int day; public Mydate(){ this.(year,month,day) } public MydateI(int year,int month,int day){ this.year = year; this.month = month; this.day = day; } }
注意:谁调用的这个方法.这个this就是谁,this是个成员变量