面向对象(全)

目录

设计思想

对象

变量(按位置分)

构造方法

方法的重载

对象与引用

代码块

import

封装*

单例模式

继承

继承中的构造器

方法的重写

抽象类

多态

final

接口


设计思想

面向对象是一种语言设计的思想(oop)

分类的思想,解决问题 扩展性高

面向过程(pop) 函数 代表语言C

解决问题是一步一步实现 用函数

概念:是描述一类事物的属性和行为的集合(抽象的定义模板)

创建类:发现类-->解决问题,找到共性

定义类 中的内容 都叫做类的成员

成员变量和方法 构造器 内部类 代码块

对象

使用时用的是类创建的实例(对象)

new 之后 一定要记着声明!!!

变量(按位置分)

按位置分

成员变量:{类中 可以使用所有的基本类型 可以不赋值 java构造器默认赋值} 局部变量 作用域整个类体

局部变量:方法体内(成员方法 构造方法 代码块) 作用域不同 必须赋值 方法结束后 局部变量就会被销毁(生命周期不同)

构造方法

构造方法和类名一样

没有返回值

默认存在的

每创建一个对象 就调用一次构造方法

作用:成员变量进行初始化赋值就是构造器的作用

方法的重载

overload

形参的数量和顺序必须有个不一样(区分)

定义了有参的构造方法 无参的构造方法默认消失

只看方法名和形参列表!

对象与引用

引用数据类型

java的对象是通过引用对其操作的

什么是引用数据类型?

栈:是运行存储(方法在栈)

堆:用来存储生成的对象

方法区:存储类信息

把对象在内存空间的地址赋给了左边的引用变量

值传递和引用传递

值和引用类型的区别

代码块

没有名称的方法体

实例代码块(跟着对象走)

静态代码块(跟着类走)

加载类就加载一系列的静态成员

but!!!类只会加载一次 所以 静态成员只会执行一次

创建对象:先加载类 后创建对象

执行的先后顺序 1静态代码块 2 实例代码块 3 构造器

目的:更好的组织管理类

全类名= 包名(根)+ 类名

控制访问权限

全小写

import

import 导入其他包中的类

如果有两个一样的类名 分别在两个不同的包中,导入一个后,还想使用第二个直接用全类名使用

访问级别访问控制修饰符同类同包子类不同包
公开public
受保护protected
默认
私有private

*类只有public和默认

一个.java文件中只能有一个 public 类(和文件同名)

用访问权限修饰符修饰成员变量方法

封装*

概念:通过访问权限的修饰符,使得信息**是否对外可见**

方便加入控制语句

只能通过规定的方法访问

方便修改实现

使用案例:private 对成员变量和方法进行修饰,在其他类访问不到

单例模式

设计模式:

只让程序中创建一个对象

new 对象需要创建构造方法

1 private 构造器 这样就不能new了

2 在类中new一个对象 返回

3 本类中创建一个对象不赋值,

在方法中加条件返回它.

(=======做题遇到的问题=========)

*局部变量可以和成员变量同名

数据类型 加 名字 = new类名();

这就创建好了一个新的对象

而名字 = new 类名();这就是给已经创建好的对象赋值!!!

继承

实现代码的代码复用性(代码重用)

代码扩展(子类中添加子类特有的方法)

extents关键字 继承

is-a关系(什么是什么关系)

继承的传递性(A>B>C)(C有ab的方法)

默认类 继承 Object(基类)!!!

继承中的构造器

子类的先会调用父类的构造器!!!

子类拥有父类的成员,所以需要对父类的成员也需要初始化

super关键字(调父类的构造器(在子类构造器的第一行!!)) 解释:super可以调父类的构造器给父类私有属性赋值! 但是不创建任何父类对象

方法的重写

概念: 父类方法不能满足应用场景,所以子类要重写(覆盖)

方法结构一样搬过来,在子类重写功能

@override 表示此方法是从父类中重写,在编译期间 会进行语法校验

重写 权限可以等于大于

构造方法和静态方法 成员变量 不能重写

抽象类

abstract

抽象方法是概念方法-----不能用de

没有方法体 的 方法 叫做 抽象方法 不需要具体实现 只定义名字

抽象的类 里面有 抽象的方法 抽象类不能创建对象(因为对象 是 具体的)

约上层的类 越需要抽象 所以只需要定义 不需要具体实现(用于规范功能名字)

复习

1.类和对象的关系

2.在类中可定义那些内容

3.描述一下构造方法 特点

4.方法重载和方法重写

5.static理解

6.封装

7.为什么用继承

8.继承语法在使用时要求

9.继承中构造方法使用特征

多态

(多种状态)

实现多态的三种条件

  1. 要有继承(包括接口的实现)(前提条件)**

  2. 要有重写**

  3. 父类引用指向子类的对象()**

    编译看左 运行看右(向上转型)

**静态和成员变量只看左边***

因为静态和成员变量在栈中(不确定)

方法在堆中

为什么要转????

为了程序的拓展性

多态2 要自己写一遍!!!!

缺点:子类本身自己的方法无法调用

然后就引入向下转型!!!大转小

关键字(instanceof):判断运行时 对象类型

向下转型需要判断对象类型

final

声明属性方法类

用final修饰的类不能被继承

1.用final修饰的常量要赋值

一般会和static一起使用

static final

2.在类中进行定义时.不进行赋值操作

在构造器中进行成员初始化

接口

用来定义功能 更彻底的抽象

面向接口编程 面向抽象编程

语法: interface

接口可以定义那些内容:

jdk7以前:只能定义抽象的方法和静态常量

8以后:还可以定义默认方法和静态方法(通过接口名访问)

接口和接口的关系

接口也可以互相继承(extends)

接口和类的关系

接口就是抽象,定义功能,让其他类实现

*implements(实现接口关键字)(可实现多个接口)

类实现接口

接口也实现多态.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值