Java 面向对象

简介

类和对象

  • 类是模子,确定对象将会拥有的特征(属性)和行为(方法)
  • 对象是类的实例表现
  • 类是对象的类型
  • 对象是特定类型的数据
  • 类,抽象的概念-模板
  • 对象,—个看得到、摸得着的具体实体。

属性和方法

  • 属性:对象具有的各种静态特征,"对象有什么”
  • 方法:对象具有的各种动态行为,"对象能做什么”

创建类、实例化类

public class Person {}
Person p = new Person();

对象实例化的过程(JVM)

构造函数

  • 构造方法与类同名且没有返回值
  • 构造方法的语句格式
  • 只能在对象实例化的时候调用
  • 当没有指定构造方法时,系统会自动添加无参的构造方法
  • 当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
  • 一个类中可以有多个构造方法

封装

  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问
  • 通过该类提供的方法来实现对隐藏信息的操作和访问
  • 隐藏对象的信息
  • 留出访问的接口
  • 如:一个实体类的封装,JavaBean等

特点:

  • 只能通过规定的方法访问数据
  • 隐藏类的实例细节,方便修改和实现

实现步骤:

语法:

  • package包名;
  • 例: package com.imooc.animal;

注意∶

  1. 必须放在Java源文件中的第一行
  2. 一个Java源文件中只能有一个package语句
  3. 包名全部英文小写
  4. 命名方式:域名倒序+模块+功能

语法:

  • import包名.类名;
  • 例: 导入包中全部类:import com.imooc.*;
  • 导入包中指定类: import com.imooc.animal.Cat;

静态

  • 类对象共享
  • 类加载时产生,销毁时释放,生命周期长
  • 类.变量名(或方法名)调用
  • 静态代码块只执行一次,构造代码块在每次对象构造的时候调用

继承

  • —种类与类之间的关系
  • 使用已存在的类的定义作为基础建立新类
  • 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类
  • 关键字:extends,如class Gan extends Person {}

特点∶
1、利于代码复用

2、缩短开发周期

重载:

  • 同一个类中
  • 方法名相同,参数列表不同(参数顺序、个数、类型)
  • 方法返回值、访问修饰符任意

重写:

  • 在子类中定义
  • 方法名相同
  • 参数类型、顺序、个数相同

访问修饰符

继承后初始化顺序:

super:

  • 代表父类引用:

  • 访问父类成员方法,super.print();

  • 访问父类属性,super.name;

  • 访问父类构造方法,super();

  • 子类的构造的过程中必须调用其父类的构造方法

  • 如果子类的构造方法中没有显式标注,则系统系默认调用父类无参的构造方法

  • 如果子类构造方法中既没有显式标注,且父类中没有无参的构造方法,则编译出错

  • 使用super调用父类指定构造方法,必须在子类的构造方法的第一行

this:

  • 当前类对象的引用
  • 访问当前类的成员方法
  • 访问当前类的成员属性
  • 访问当前类的构造方法
  • 不能在静态方法中使用

Object类

  • Object类是所有类的父类
  • 一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组)
  • Java中的每个类都可以使用Object中定义的方法

final:

  • 修饰类表示不允许被继承
  • 修饰方法表示不允许被子类重写-
  • final修饰的方法可以被继承
  • 不能修饰构造方法
  • 修饰变量表示不允许修改
  • 可配合static使用,静态常量public static final String URL="www.baidu.com"

注解

  • JDK1.5版本引入的一个特性

  • 可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释

  • 元注解:注解会在编译时期保留在加载class文件时会被丢弃

  • Spring注解:在运行阶段还起作用,甚至会影响运行逻辑的注解

多态

  • 意味着允许不同类的对象对同一消息做出不同的响应。
  • 编译时多态:设计时多态,方法重载
  • 运行时多态:程序运行时动态决定调用哪个方法

instanceof:判断对象是否是这个类的实例,可以是间接的继承关系

抽象类

应用场景∶某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

抽象类和抽象方法:

1、abstract定义抽象类

2、抽象类不能直接实例化,只能被继承,可以通过向上转型完成对象实例

3、abstract定义抽象方法,不需要具体实现

4、包含抽象方法的类是抽象类

5、抽象类中可以没有抽象方法

接口

  • 接口定义了某一批类所需要遵守的规范
  • 接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

内部类

  • 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类
  • 与之对应,包含内部类的类被称为外部类

分类:

  • 成员内部类
  • 静态内部类
  • 方法内部类
  • 匿名内都类

Java 面向对象 【钢镚核恒】相关推荐

  1. Spring MVC【钢镚核恒】

    Spring MVC 简介 Spring MVC是Spring体系的轻量级Web MVC框架 Spring MVC的核心Controller控制器,用于处理请求,产生响应 Spring MVC基于Sp ...

  2. Spring 【钢镚核恒】

    Spring 简介 Spring框架是企业开发复杂性的一站式解决方案 Spring框架的核心是loC容器与AOP面向切面编程 Spring loC负责创建与管理系统对象,并在此基础上扩展功能 使用 导 ...

  3. Java 简介之JVM、JDK、JRE【钢镚核恒】

    Java 简介 Java是一门面向对象的程序设计语言 1995年由sun公司发布 2010年sun公司被Oracle公司收购 JVM JVM(Java Virtual Machine),Java虚拟机 ...

  4. Java 探究集合List、Map、Set底层的数据结构【钢镚核恒】

    Java 集合 简介 集合 (collection)是存储对象的容器.例如:6个人一个团队(集合) 集合与数组类通,数组是存储具体数据的容器.集合的底层有用到数组 这篇文章是加深对集合的理解,探究各种 ...

  5. Java 原始的JDBC方式连接MySQL数据库【钢镚核恒】

    Java JDBC 简介 JDBC(Java DataBase Connectivity,Java数据库连接) JDBC 可让Java通过程序操作关系型数据库 JDBC 基于驱动程序实现与数据库的连接 ...

  6. Java 异常 【钢镚核恒】

    Java 异常 简介 错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误. 异常体系图 异常处理 捕获异常(快捷键 : Ctr l+ Alt + T) // try块后可接零个或多个c ...

  7. Java 安装及卸载【钢镚核恒】

    Java 安装及卸载 卸载 删除Java安装目录 删除JAVA_HOME 删除path中的JAVA相关 查看 java -version 安装 下载JDK并安装(路径无中文) 配置环境变量 添加 JA ...

  8. Java 算法之 “删除链表中倒数第k个节点”【钢镚核恒】

    删除链表中倒数第k个节点 简介 题目描述:给定⼀个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点[Leetcode] 链表中倒数第k个节点 , 和这篇文章使用的方法一致,就是变成找到倒数k+ ...

  9. IntelliJ IDEA 常用的配置 【钢镚核恒】

    IntelliJ IDEA 配置 字符集,File Encodings 自动导入,Auto Import 忽视大小写,编译器 - 常规 注释不在第一列 启动时不打开项目 导入.导出配置 快捷键 # 窗 ...

最新文章

  1. 在生产中使用Java 11:需要了解的重要事项
  2. pyzbar Unable to find zbar shared library
  3. 高并发架构系列:MQ消息队列的12点核心原理总结
  4. Spring boot排除依赖
  5. matlab inpainting,MATLAB-Python-inpainting-codes-master
  6. python箱线图读取的几列数据_【分析篇】:python 基本数据统计和绘制箱线图
  7. 状态机 python_Python状态机设计
  8. 电力三维基础信息平台
  9. Objective-c编程语言(一):The Objective-C Programming Language:Introduction
  10. C# 学习笔记-Chart控件使用
  11. 高斯过程回归matlab,高斯过程回归及其应用.PDF
  12. linux设备驱动中的阻塞与非阻塞(二)
  13. Java+SQLServer实现——网上图书馆借还管理系统
  14. Python从入门到实战,我觉着拥有这三本书很有必要
  15. 书论20 袁昂《古今书评》
  16. 2023年全国最新二级建造师精选真题及答案62
  17. 焊武帝再爆肝造CPU,软硬件全自研,可玩游戏,基础器件成本不到1000元
  18. 如何用代码画出一幅好看的画
  19. xilinx官网下载vivado速度慢的解决方法(适用于所有版本)
  20. matplotlib画的折线图

热门文章

  1. python爬虫批量爬取乐愚社区精美壁纸
  2. 东京工业大学计算机博士要求,东京工业大学今4月起,研究生、博士申请新政策...
  3. 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
  4. terser是uglifyjs的升级版
  5. 无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现【40行代码】
  6. Java开源技术分享:使用TopCode实现手指跟踪
  7. AutoJs学习-实现手指动作录制
  8. 扫地机器人石头爬坡_智能扫地机器人爬坡能力分析
  9. inout port 仿真
  10. 计算机毕业设计Java高校企业实训系统(源码+系统+mysql数据库+Lw文档)