【Java大数据】面向对象

面向对象的引入

面向对象本质是一种编程范式(一种思考方式)
面向过程:关注代码的实现细节
面向对象:先把代码实现的细节整合到对象中,找到这个对象就能拥有对象的功能
万物皆对象
面向对象基于面向过程,面向对象优于面向过程?
如果场景比较简单,优先推荐面向过程,反之,优先推荐面向对象

对象和类之间的关系
对一类对象来进行抽取,把共有的特征信息抽取成了属性,把共有的行为信息抽取成了方法,把这一类对象抽取成了类。
类是对对象的概括,对象是对类的具体实现

构造方法

调用构造方法—构建对象
无参构造
1、与类同名 2、没有返回值类型
有参构造用于属性初始化,支持构造方法重载
普通方法可以与类同名
当类中没有定义任何形式的构造方法,JVM会在底层默认添加无参构造;如果类中已经定义构造方法,那么底层就不会再添加无参构造
类中至少含有一个构造方法
java中所有的非静态属性和方法要有对象调用

this关键字
this可以代表当前类还没有产生的对象、当前类刚创建的对象、当前类正在使用的对象
this是一个灵活的指代,可以指代成当前类正在活动的对象
this语句—在同一个类中的构造方法里调用别的构造方法 要在首行

构造代码块
在方法外类内{}
优先于所有的构造方法先执行
功能:属性初始化

局部代码块
在方法内定义代码块{}
控制变量的生命周期,提高内存利用率

成员变量与局部变量的区别
成员变量
在这里插入图片描述
局部变量
在这里插入图片描述

位置
成员变量:方法外类内
局部变量:方法内
适用范围
成员变量:整个类
局部变量:整个方法
内存
成员变量:堆内
局部变量:栈内
生命周期
成员变量:随着类创建对象而出现,随着对象被回收而消失
局部变量:当方法被调用时出现,方法执行结束而消失

面向对象的特征

封装、继承、多态(抽象)
封装
体现形式—方法,属性私有化并且提供公共的访问方式来进行正常取值和赋值,提高代码数据安全性

继承(单继承—继承结构—树状图)
如果多个类的内容出现重复,把重复的内容放到一个新的类中,通过extends关键字让原来的类和新的类产生关联关系—继承。
原来的类就是子类,新的类就是父类。
子类可以继承父类的部分信息(父类的私有化信息、构造方法以及构造代码块不能被继承)。
继承方式(单继承)
子类只能继承一个父类,一个父类可以有多个子类
class A extends B{}
class B extends C{}
class C{}(多级继承)

重写(覆盖)
在父子类中出现了方法签名一致的方法,称之为重写。
遵守重写原则(两等两小一大)
两等:方法签名一致(前提)
当父类方法返回值类型是基本类型/void时,那么子类方法返回 值类型要和父类方法返回值类型保持一致
class A{
public int m(){return 1;}
}
class B eatends A{
public int m(){return 2;}
}
一小:当父类方法返回值类型是引用类型时,那么子类方法返回值类型要么和父类方法返回值类型一致,要么是父类方法返回值类型的子类
class A{}
class B extends A{}

class C{
public A m(){return null;}
}
class D extends C{
public A/B m(){return null;}
}
一大:子类方法的访问权限修饰符要么和父类方法的访问权限修饰符一致,要么比父类方法访问权限修饰符的范围要大
class A{
public void m(){}
}
class B extends A{
public void m(){}
}
解释重写原则(反证法)
1、子类方法访问权限修饰符要么和父类访问权限修饰符范围一致,要么大于父类的方法访问权限修饰符的范围
class A{
public void m(){}
}
class B extends A{
void m(){}
}
A a = new B();//向上造型,声明类是A类,可以调用A类里m方法,表明这个m方法可以在任意位置被调用。
a.m();//向上造型对象调用方法具体执行看子类是否有重写方法,执行B类里的m方法,表明m方法同包范围内被调用。此时前后有矛盾,代码错误
2、当父类方法返回值类型是引用类型时,那么子类方法返回值类型要么和父类方法返回值类型一致,要么是父类方法返回值类型的子类
class A{
}
class B extends A{}

class C{
public B m(){return null;}
}
class D extends C{
public A m(){return null;}
}
C c = new D();//向上造型对象c,调用声明类C类m方法,返回B类对象,获取B类里信息。
A a = c.m();//向上造型执行具体方法看子类D类,调用D类里m方法,返回A类对象,由a对象可以获取A类里信息,此时前后矛盾,证明代码是错误的

访问权限修饰符—控制在哪个位置关系(定义信息地方和获取信息地方产生了四种位置关系—本类、同包类、其他类、子类)下可以获取信息
可以修饰属性和方法
类可以被public、默认来修饰
在这里插入图片描述
super关键字
a、关键字,代表父类对象
b、super语句—在子类构造方法里调用父类构造方法 首行使用
c、每个子类构造方法里默认调用父类无参构造,如果父类没有提供无参构造,需要每个子类构造方法里手写super有参语句,调用对应的父类有参构造
d、父类对象优先于子类对象先出现
e、父子类执行顺序(对象级别)
父类构造代码块-父类构造方法-子类构造代码块-子类构造方法

多态
代码执行过程中呈现的多种形式
java分为编译时期、运行时期
编译时多态—在编译时期绑定代码
体现形式—重载
public void m(){…}
public void m(int i){…}
运行时多态—在运行时期绑定代码
体现形式—重写、向上造型(前提是继承)
向上造型—左边声明类是父类,右边实际创建类是子类
在这里插入图片描述

向上造型对象可以调用哪些方法看父类,方法的具体执行看子类是否有重写方法(父类—目录 子类—正文)
优点:1、统一参数类型
2、降低耦合度(高内聚、低耦合)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值