大数据基础之java面向对象


在这里插入图片描述

1. 面向对象概述

“面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。

2. 类的定义

“类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。”

3. 类的使用

1.如果创建一个类,不写构造方法,系统会默认赋予一个空参构造
2.如果我们书写了构造方法,无论是空参还是全参,系统就不会自动赋予了
3.如果想要在创建对象时动态赋予成员变量值,则使用全参构造
4.创建一个对象时,只会执行一种构造方法

空参构造:
修饰符 类名(){
}
全参构造
修饰符 类名(参数类型 参数名称1,参数类型 参数名称2 ,){
}

成员变量一般是私有的
为了调用或者赋值成员变量我们一般会使用get set方法
get或set 方法内部想要获取成员属性,一般会采用this获取,否则出现同名局部变量后优先使用局部变量
在java中遵循就近原则

4. 封装

封装: 尽量少的将方法或者属性暴露给调用者
好处: 安全, 降低调用难度,和沟通成本
缺点: 灵活性差

方式:private  可以将属性和方法私有  不能修饰类

特点:private 修饰过后,可以在类的内部直接使用,但是在类的外部不能调用,类似于python中的__

5. 继承

1.在子类的构造方法中,都会自动调用父类的空参构造
2.如果父类没有空参构造,我们可以使用spuer(参数的方式)调用父类的全参构造
一般情况下,我们会手动给出父类的空参构造
  • 局部变量 类中的成员变量, 父类中的成员变量的调用
int age = 10;
Person p1 = new Person();
System.out.println("局部变量:" + age);
System.out.println("ItcastMan成员变量:" + this.age);
System.out.println("Chinese成员变量:" + super.age);
System.out.println("Person成员变量:" + p1.age);

方法重写

   子类中继承父类方法的特点:
       1.在子类中可以继承父类中的非私有属性和方法
       2.子类对象中可以书写新的方法
       3.子类中和父类中相同的方法可以进行覆盖,这个叫做重写
           注意: 重写方法时要使用override
                父类中的私有方法不能重写,但是可以书写与其同名的子类方法
                重写父类方法时,不能比父类的权限更低
   
       4.子类中可以重载父类中的方法

6. 多态

多态: 在不同的环境下,展现出不同的状态就是多态.
java中的多态: 在继承关系中,使用父类创建子类对象时,不同的子类对象所执行的效果不相同

多态的前提:1.要有继承关系 2.方法重写3.父类引用指向子类对象

多态情况下调用成员的规则:
调用成员变量: 当前父类引用指向子类对象,调用成员变量时,调用的是父类的成员变量
调用成员方法: 当前父类引用指向子类对象,调用成员方法时,调用的是子类的成员方法

在应用java的多态时,一般都会使用子类对象调用子类中的方法,而不会使用其调用变量,因为调用变量提现不出来多态多此一举
如果使用get 或者set 方法进行数据处理,调用的是子类的

多态的弊端

多态中有几个弊端:
1. 无法通过子类的对象调用子类中特有的功能
解决方法:向下转型

转型方法:
向上转型:从子类向父类转型(自动)
父类名称 对象名 = (子类对象);
父类名称 对象名 = new 子类名();

向下转型:从父类向子类进行转型(强制)
子类对象 对象名  = (子类名)(父类对象);
子类对象 对象名  = (子类名)(new 父类名());

向下转型时一定要具备继承关系,否则报错

7. final和static

final

final 关键字:
代表当前被修饰的内容已经是最终状态,不能被修改只能被使用
可以修饰类:此类不能被继承,但是可以继承其他的类, 一般作为工具类使用
可以修饰成员变量:此时成员变量变为常量,只能在定义时赋值一次,后续不可赋值或修改
可以修饰方法:此方法可以被继承,但是不能被重写.

static

static 静态
1.使用static修饰成员变量: 所有的对象所共有,修饰完成后,调用时使用类名调用
可以类比为python中的类属性
2.使用static修饰成员方法: static中只能调用带static的属性或者方法, 不能使用this super
可以类比为python中的类方法

8. 抽象类

抽象:不具体 或者说没有真实的实现
抽象方法: 不具备方法体的方法,只是声明的一下方法
抽象类:具有抽象方法的类叫做抽象类

练习:

  1. 创建抽象类Animal.
  2. 在该类中定义抽象方法eat()

9. 接口

java
接口:就是比抽象类还要抽象的一个类,使用interface进行修饰
一般接口都是给类添加特殊的功能拓展的

1.使用interface修饰
2.使用implements继承
3.在接口中只能书写抽象方法和常量
抽象方法自动添加 public abstract
常量中自动添加 public static final
4.可以使用接口类创建子类对象,调用其功能,实现接口多态

类和接口间的继承:
1.类和类之间只能单继承,或多级继承
2.类和接口之间可以单实现,也可以多实现
3.接口和接口之间,可以多继承,也可以单继承

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chad__chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值