qiyeqi

导航

 

面向对象

本质:以类的方式组织代码,以对象的组织封装数据

特点:封装、继承、多态

静态方法不能调用动态方法(静态方法和类一起加载,动态方法是类实例化后才存在的)

 

image-20220427030515750

类的创建

image-20220427032015988

 

类实例化后会产生一个自己的对象,可以有很多个

image-20220427032030494

 

构造器

image-20220427034107423

一个类中即使没有方法也有一个构造器 实列化初始值

使用new关键字是必须有构造器(本质就是调用构造器)

一旦定义了有参构造器,无参构造必须显示

创建对象的内存分析

image-20220427040033014

image-20220427035514816

  1. 先走main方法

  2. 在栈里面创建对象,有多少个对象就创建多少个

  3. 对象的属性和方法都放在堆内存中,默认是空

  4. 常量放在常量池中

  5. 方法放在方法池中

  6. 方法区隶属于堆内存

封装

定义:应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问(数据隐藏)

属性私有(get/set)

就是对于方法和属性进行私有化,再用get/set取出来

用处:提高安全性,提高可维护性

继承

image-20220427160438688

私用的东西不能继承

super

调用父类的属性或方法

调父类的构造器必须放在子类的第一行

调动父类构造器必须放在子类构造器的第一行

this

输出当前类的方法或属性

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

方法的重写

子类继承了父类的方法后对父类的方法进行修改

重写只会发生在非静态的方法中并且发生继承(没有static)

方法名一样、参数列表一样、修饰符(可以扩大不能所需public、protected、default、private)

异常的范围可以缩小不能扩大

多态

image-20220427163225377

一个对象的实际类型是确定的但是指向的引用类型是不确定的

对象能执行哪些方法,主要考创建对象的左边的类型是否有该方法,与右边的关系不大

条件:继承、方法重写、父类引用指向的是子类

image-20220427163940948

 

instanceof和类型转换

  1. instanceof判断两个类是否有父子关系 返回的值是true和false 左右两边要有关系

  2. 子类转换成父类可能会丢失一些方法

static

在当前类中可以直接调用方法可以不用创建对象

 

abstract抽象类

  1. 抽象类的所有方法,继承了它的字类都必须实现它的方法

  2. 类是单继承,接口可以多继承

  3. 不能new这个抽象类,只能让子类去实现

  4. 抽象类可以写普通方法,抽象方法必须在抽象类中

  5. ①在接口中 不可以有构造方法

    在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。

    A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需修改。接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,

    B. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序

    C. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。

     

接口

image-20220427182613405

  1. 接口里面的方发默认是public abstract

  2. 接口都需要有实现的类

  3. 用Implements继承接口

  4. 实现了类必须重写接口里面的方法

  5. 接口里面的属性默认是public static final

作用

  1. 约束

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

  3. 接口不能实例化,因为灭有构造方法(不能创建对象)

内部类

一个类里面可以有多个class但是只能有一个public class

成员内部类

通过外部类定义内部类

可以获得外部类的私有属性

image-20220427184303085

静态内部类

  1. 静态方法不能访问非静态方法

  2. 加了一个static就是静态内部类

局部内部类

就是在方法里面写一个类

匿名类

image-20220427185025623

 
posted on 2022-04-27 18:52  七夜七  阅读(24)  评论(0)    收藏  举报