此为个人学习笔记,如有错误,欢迎指教
面向对象
概述:
面向对象开发就是不断的创造对象,使用对象,指挥对象做事情;
面向对象设计就是在管理和维护对象之间的关系
面向对象特点
封装:类
继承:父类(抽象类)
多态:接口
封装:
概述
类:
概述:
所有的类都默认继承一个类:Object
类的内容:
成员变量:是该事物的呆在特征描述
构造方法
成员方法:改事物的内在功能描述
成员变量
定义在类中的变量
局部变量、成员变量的区别?
局部变量:定义方法中或者方法声明上的变量
A:定义的位置不同
成员变量:定义在类中
局部变量:定义在方法内或者方法声明(参数)上
B:内存中的位置
成员变量:堆内存
局部变量:栈内存(方法在栈中执行,局部变量又定义在栈中)
C:声明周期不同
成员变量:定义在类中,随着类对象的创建而存在,随着类对象的消失而消失
局部变量:定义在方法中,随着方法的调用而存在,随着方法的执行完毕而消失
D:初始化值不同
成员变量:在堆内存中,堆特点,给默认初始值
局部变量:必须定义和赋值才可以
E:当成员变量名称和局部变量名称相同时,采取就近原则,在方法内部使用的是局部变量;
成员变量、静态变量的区别?
静态变量:使用static修饰的变量
A:调用不同:
成员变量:定义在类中,对象调用
静态变量:类名调用或者对象调用
B:内存位置不同:
成员变量:堆内存中
静态变量:方法区的静态区
C:声明周期不同:
成员变量:随着类对象的创建而存在,随着类对象的消失而消失
静态变量:随着类的加载而加载,随着类的消失而消失
构造方法
作用:给对象的数据进行初始化的
说明:若你不提供构造方法,系统会给类默认的构造方法(无参的)
如果你写了构造方法,系统就不给默认的构造了
构造方法可以重载格式:
修饰符 方法名(与类型相同)(参数类型 参数名,参数类型,参数名){}
成员方法:
除了构造方法就是成员方法了
类的初始化过程:
代码:
/**
* 成员变量与构造方法
*/
public class Student2 {
// 成员变量
String name = "name的显示初始化值";
int age = 1;
String sex = "sex的显示初始化值";
public void setName() {
this.name = "通过构造给name赋值";
}
}
public class ClassDemo1 {
public static void main(String[] args) {
Student2 stu = new Student2();
}
}
在内存中的执行过程:
##类的初始化过程:
加载class文件
在栈中开辟空间
在堆中申请(new)空间
成员变量的初始化的默认初始化
成员变量的初始化的显示初始化
构造方法初始化
给对象地址值
创建对象并赋值在内存中的过程:
/**
*创建对象并赋值对应的代码
*成员变量与成员方法
*/
public class ClassDemo1 {
public static void main(String[] args) {
Student stu = new Student();
System.out.println(stu.name);//null
System.out.println(stu.age);//0
System.out.println(stu.sex);//null
stu.name = "你好";
System.out.println(stu.name);//你好
stu.setName("你好11");
System.out.println(stu.name);//你好11
}
}
说明:图中第三步在内存中详细的过程即是 “类的初始化过程”
关于匿名对象
代码块
A.局部代码块:
用于限定变量的声明周期,及早释放,提高内存使用率
B.构造代码块
把多个构造方法中相同的代码可以放到这里,在构造方法执行前执行
C.静态代码块
对类的数据进行初始化,仅仅执行一次
面向对象开发就是指挥对象做事情,有多个对象,每个对象都负责不同的分类的事情;
对象内就封装了类的事情的相关的方法;
为了方便查找使用哪个对象呢,把跟这个对象
而对象就是类的实例,
类是封装了方法,
方法又是完成特定功能
假如一个家公司,有商务部,财务部,技术部,行政部,人事部;
面向对象开发就是 公司的最高指挥者,指挥 商务部对象,财务部对象,技术部对象,行政部对象,人事部对象做事情,有一件任务过来,发现是属于财务部的事情,就指挥财务部干活,把结果给最高指挥者;指挥者看完之后发现还需要技术部配合,那么就再把此任务分配给技术部;每个部门呢又有最高的指挥者,再循环分配任务,知道某个具体操作上;假如部门的最高领导者离职了,换了下一个,那也不会影响这个过程;
参考书籍视频:
-学习视频:黑马程序员_Java基础视频-深入浅出精华版
-阅读书籍:Java核心技术 卷I(机械工业出版社)
API1.8