面向对象编程OOP

面向对象编程OOP

面向对象定义

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。

  • 抽象

  • 三大特性:

    • 封装

    • 继承

    • 多态

  • 从认识论角度考虑是先有对象后有类。对象,具体的事物。类,是抽象的,是对对象的抽象。从代码运行角度考虑是先有类后有对象。类是对象的模板。

方法的调用

在这里插入图片描述

构造器

main函数只有一个

public class Application {
    public static void main(String[] args) {

        //new 实例化了一个对象
        Student student = new Student("tzx", 10);

        System.out.println(student.name);
    }
}

构造函数

public class Student {

    //显示的定义构造器
    String name;
    int age;

    //alt + insert

    //1.使用new关键字,本质是在调用构造器
    //2.用来初始化值

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Student(String name) {
        this.name = name;
    }
}

构造器:

  1. 和类名相同

  2. 没有返回值

作用:

  1. new 本质在调用构造方法

  2. 初始化对象的值

注意点:

  1. 定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造

快捷键:Alt + Insert

创建对象内存分析

在这里插入图片描述

类与对象

  1. 类与对象:

    类是一个模板:抽象,对象是一个具体的实例

  2. 方法:

定义、调用!

  1. 对应的引用

引用类型: 基本类型(8种)

对象是通过引用来操作的: 栈---->堆、

  1. 属性:字段Field 成员变量

默认初始化:

数字: 0 0.0

char: u0000

boolean: false

引用: null

修饰符 属性类型 属性名 = 属性值! //定义方法名规则

  1. 对象的创建与使用
  • 必须使用 new 关键字创建对象,构造器 Person tzx = new Perso();

  • 对象的属性 tzx.name

  • 对象的方法 tzx.sleep()

  1. 类:

静态的属性 属性

动态的行为 方法

封装

public :公有 private :私有

在这里插入图片描述

封装的好处:

  1. 提高程序的安全性,保护数据。

  2. 隐藏代码实现细节。

  3. 统一接口。

  4. 系统可维护增加了。

属性私有,get/set

继承

使用关键字extend用于继承某一父类。

子类继承了父类,就会有父类的其全部方法。父类封装的方法都以关键字public用来书写。私有的private无法被继承。

default :默认的 protected :受保护的

所有的类都继承了object类

super:使用父类的参数

在这里插入图片描述
在这里插入图片描述

super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个

  2. super必须只能出现在子类的方法或者构造方法中!

  3. super和this不能同时调用构造方法!

对比this:

代表的对象不同:

this: 本身调用者这个对象

super: 代表父类对象的应用

前提:

this:没有继承也可以使用

super:只能在继承条件下才可以使用

构造方法:

this( ) :本类的构造

super( ):父类的构造

重写:需要有继承关系,子类重写父类的方法!执行时都只执行子类的方法

  1. 方法名必须相同

  2. 参数列表必须相同

  3. 修饰符:范围可以扩大但不能缩小: public>protected>default>private

  4. 抛出的异常:范围,可以被缩小,但不能扩大: ClassNotFoundException ----> Exceptiom(大)

重写,子类的方法和父类必要一致,方法体不同!

为什么要重写?

  1. 父类的功能,子类不一定需要,或者不一定满足!

快捷键 : Alt + Insert : override;

多态

  1. 多态是方法的多态,属性没有多态。

  2. 父类和子类,有联系 类型转换异常! ClassCastException!

  3. 存在条件: 继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new son( );

  4. static 方法,属于类,它不属于实例

  5. final 常量:

  6. private 方法:

instanceof (类型转换)

在这里插入图片描述

static方法类只会被执行一次。

抽象类

  • abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是抽象方法;如果修饰类,那么该类就是抽象类。

  • 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为抽象类。

  • 抽象类,不能使用new关键字来创建对象,它是用来让子类继承的。

  • 抽象方法,只有方法的声明,没有方法的实现,它是用来让子类实现的。

  • 子类继承抽象类,那么就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类。

接口(interface)

接口的作用:

  1. 约束

  2. 定义一些方法,让不同的人实现

  3. public abstract

  4. public static final

  5. 接口不能被实例化,接口中没有构造方法

  6. implements可以实现多个接口

  7. 必须要重写接口中的方法

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大脑还没宕机

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

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

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

打赏作者

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

抵扣说明:

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

余额充值