面向过程:
思想强调的是过程,亲力亲为。
面向对象:
这种思想强调的是结果,面向对象是Java机器重要的特征,Java就是一门面向对象的语言。
类:
类值的是类型Type,指一类事务
类是抽象的,要提取一类事务的特点与功能
可以把类理解成设计图纸,模板
对象:
对象就是根据类创造出的具体实例
一个雷可以创造出多个对象,对象通过地址值来区分
对象创建过程分析:
CGB2106 c = new CGB2106();
1.在栈内存中创造一块空间,CGB类型的引用类型变量c,把c加入到栈底,此时c只有一个默认值null。
2.在栈内存中创造一块空间用来存放CGB类型的对象。
3.要给这个对象进行出事话,方法使用比如:String brand = null;
4.此对象已经准备好,所以会生成一个唯一的地址值,并将这个地址值交给栈内存中的变量c来保存。
5.如果后续想要对对象做操作,比如:c.class=1;先会找到栈中c变量保存的地址值,根据这个地址找到栈中的对象在做异步的操作
面向对象的特征-封装
属性的封装
用private修饰属性,一旦属性被private修饰,就只能在本类中使用,外界无法访问
所以为了让外界能够按照我们提供的方式来调用,需要根据属性生成公共的getXxx()与setXxx()方法
方法的封装
方法的封装也是使用private来修饰方法
如果想要调用词私有方法的功能,就需要在本类的公共方法里调用这个私有方法
构造方法
格式:
与类同名且没有返回值类型的方法
作用:
构造方法用于创建对象时使用,每次创建对象时,都会自动触发构造方法
特点:
- 每个类会默认提供一个本类的无参构造
- 构造方法也存在重载的现象(无参/含参/全参)
- 我们是通过方法名+参数列表的方式来确定要调用哪个方法的
- 全参构造不仅可以创建对象,还可以给这个创建出来的对象的属性赋值
- 如果添加了任意一个含参构造,默认的无参构造会被覆盖,所以需要手动添加无参构造
1.当本类的成员变量与局部变量同名时,可以使用"this.变量名"的方式指定成员变量
2.this还可以实现构造方法的调用,注意构造方法之间不可以互相调用,否则会死循环,除此之外,本语句必须写在构造方法的第一行
3.this(); 代表调用的是本类的无参构造
4.this(参数);代表调用的是本类的对应参数的构造方法
构造代码块与局部代码块
构造代码块
位置:类里方法外
作用:用于提取所有构造方法的共性功能
注意事项:每一次创建对象时才会触发,而且优先于构造方法执行
局部代码块
位置:方法里
作用:用于控制变量的作用范围
注意事项:只有调用局部代码块所处的方法时,局部代码块才会执行
执行顺序:构造代码块-》构造方法-》局部代码块
方法的重载
现象:在同一个类中,存在多个方法名相同但是参数类表不同的方法
注意:我们这里所说的参数列表不同,指的是参数的个数与参数的类型,与参数名无关
注意:重载是为了使用时,传入不同的参数,也可以很好的匹配到同名的方法来执行此功能
形参与实参
比如方法参数列表中的参数名就是一个形参,形参没有具体的值,调用方法时,传入什么值,就是什么实参是实际存在的参数,有自己要保存的明确的值
面向对象的特征之继承
使用extends建立子类与父类的继承关系
子类继承父类相当于子类把父类的功能复制了一份,但注意,构造方法不能被继承
继承后,子类可以使用父类的所有非私有资源,私有资源不可用的原因是不可见
Java只支持单继承,一个子类只能有一个父类,但是一个父类可以有多个子类
继承具有传递性,爷爷的功能会传给爸爸,爸爸的功能会传给孙子
继承是强耦合关联性非常强的is a关系
关键字super
super可以在父类成员变量与子类成员变量同名时,用过super.变量名的方式调用父类的成员变量
还可以通过super调用父类的构造方法,子类的构造方法首行默认存在super(); 表示调用父类的无参构造,如果没有父类的无参构造,需要手动提供父类的其他含参构造供子类调用
tips:子类其实并不关心调用的是父类的哪个构造方法,只是需要先调用一个父类的构造方法而已,所以每次创建子类对象时,都会先调用父类的构造方法,再调用子类的构造方法
注意:构造方法的调用只能在构造方法的首行
方法的重写
前提:子类继承父类以后,对父类的功能做改进
语法规则:两同 两小 一大
两同:子类的方法与父类方法的方法名+参数列表相同
一大:子类方法的修饰符 >= 父类方法的修饰符
两小:子类方法的返回值类型 <=父类方法的返回值类型
子类方法抛出的异常类型 <= 父类方法抛出的异常类型
注意:我们在重写规则中提到的方法的返回值类型的大小,指的不是值的大小【1与2】,也不是字节的大小【byte与int】,我们这里指的“大小”是说:子类方法的返回值类型必须是父类方法返回值类型的子类或者是同一类型
比如父类是:void,子类是void
比如父类是:Cat,子类是MiaoMiao
关键字static
静态可以修饰变量,方法,代码块
被static修饰的资源称作静态资源
静态资源属于类资源,随着类的加载而加载,只加载一次
静态资源可以被类名直接调用,原因是因为静态资源优先于对象加载,没有对象也可以使用
静态资源被全局对象共享,只有一份
静态只能调用静态
静态代码块static{}
位置:类里方法外
执行时机:类加载时就加载,而且只会加载一次
作用:初始化,用于加载那些需要第一时间就加载,而且只加载一次的资源
代码块的执行顺序:
静态代码块 构造代码块 构造方法 局部代码块
关键字final
final表示最终,可以修饰
被final修饰的类是最终类,不可以被继承
被final修饰的方法是方法的最终实现,不可以被重写
被final修饰的“变量”其实是常量,值不可以被修改,而且常量定义时必须同时赋值
【笔记|面向对象笔记】
推荐阅读
- java|达内cgb2111第一次月考 76分
- java|Java面向对象,封装,继承的基础练习
- 达内培训期间所学的知识|CGB2111开班第六天
- 学习经历|cgb2107-第三阶段-day03-Mybatis入门
- 达内培训期间所学的知识|CGB2111开班第七天
- 第一阶段|【第一阶段 day22 面向对象】面向过程 面向对象 类 对象 类与对象的关系 对象创建过程分析 封装 访问控制符
- spring|手把手带你搭建SpringCloud, 从公共模块搭建一套完整微服务架构
- 程序员|全靠这套面试题,Java高级工程师每日面试题精选
- 程序员|Java高级工程师每日面试题精选,一文全懂