Java 面向对象 【钢镚核恒】
Java 面向对象
简介
类和对象
- 类是模子,确定对象将会拥有的特征(属性)和行为(方法)
- 对象是类的实例表现
- 类是对象的类型
- 对象是特定类型的数据
- 类,抽象的概念-模板
- 对象,—个看得到、摸得着的具体实体。
属性和方法
- 属性:对象具有的各种静态特征,"对象有什么”
- 方法:对象具有的各种动态行为,"对象能做什么”
创建类、实例化类
public class Person {}
Person p = new Person();
对象实例化的过程(JVM)
构造函数
- 构造方法与类同名且没有返回值
- 构造方法的语句格式
- 只能在对象实例化的时候调用
- 当没有指定构造方法时,系统会自动添加无参的构造方法
- 当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
- 一个类中可以有多个构造方法
封装
- 将类的某些信息隐藏在类内部,不允许外部程序直接访问
- 通过该类提供的方法来实现对隐藏信息的操作和访问
- 隐藏对象的信息
- 留出访问的接口
- 如:一个实体类的封装,JavaBean等
特点:
- 只能通过规定的方法访问数据
- 隐藏类的实例细节,方便修改和实现
实现步骤:
包
语法:
- package包名;
- 例:
package com.imooc.animal;
注意∶
- 必须放在Java源文件中的第一行
- 一个Java源文件中只能有一个package语句
- 包名全部英文小写
- 命名方式:域名倒序+模块+功能
语法:
- 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 面向对象 【钢镚核恒】相关推荐
- Spring MVC【钢镚核恒】
Spring MVC 简介 Spring MVC是Spring体系的轻量级Web MVC框架 Spring MVC的核心Controller控制器,用于处理请求,产生响应 Spring MVC基于Sp ...
- Spring 【钢镚核恒】
Spring 简介 Spring框架是企业开发复杂性的一站式解决方案 Spring框架的核心是loC容器与AOP面向切面编程 Spring loC负责创建与管理系统对象,并在此基础上扩展功能 使用 导 ...
- Java 简介之JVM、JDK、JRE【钢镚核恒】
Java 简介 Java是一门面向对象的程序设计语言 1995年由sun公司发布 2010年sun公司被Oracle公司收购 JVM JVM(Java Virtual Machine),Java虚拟机 ...
- Java 探究集合List、Map、Set底层的数据结构【钢镚核恒】
Java 集合 简介 集合 (collection)是存储对象的容器.例如:6个人一个团队(集合) 集合与数组类通,数组是存储具体数据的容器.集合的底层有用到数组 这篇文章是加深对集合的理解,探究各种 ...
- Java 原始的JDBC方式连接MySQL数据库【钢镚核恒】
Java JDBC 简介 JDBC(Java DataBase Connectivity,Java数据库连接) JDBC 可让Java通过程序操作关系型数据库 JDBC 基于驱动程序实现与数据库的连接 ...
- Java 异常 【钢镚核恒】
Java 异常 简介 错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误. 异常体系图 异常处理 捕获异常(快捷键 : Ctr l+ Alt + T) // try块后可接零个或多个c ...
- Java 安装及卸载【钢镚核恒】
Java 安装及卸载 卸载 删除Java安装目录 删除JAVA_HOME 删除path中的JAVA相关 查看 java -version 安装 下载JDK并安装(路径无中文) 配置环境变量 添加 JA ...
- Java 算法之 “删除链表中倒数第k个节点”【钢镚核恒】
删除链表中倒数第k个节点 简介 题目描述:给定⼀个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点[Leetcode] 链表中倒数第k个节点 , 和这篇文章使用的方法一致,就是变成找到倒数k+ ...
- IntelliJ IDEA 常用的配置 【钢镚核恒】
IntelliJ IDEA 配置 字符集,File Encodings 自动导入,Auto Import 忽视大小写,编译器 - 常规 注释不在第一列 启动时不打开项目 导入.导出配置 快捷键 # 窗 ...
最新文章
- 在生产中使用Java 11:需要了解的重要事项
- pyzbar Unable to find zbar shared library
- 高并发架构系列:MQ消息队列的12点核心原理总结
- Spring boot排除依赖
- matlab inpainting,MATLAB-Python-inpainting-codes-master
- python箱线图读取的几列数据_【分析篇】:python 基本数据统计和绘制箱线图
- 状态机 python_Python状态机设计
- 电力三维基础信息平台
- Objective-c编程语言(一):The Objective-C Programming Language:Introduction
- C# 学习笔记-Chart控件使用
- 高斯过程回归matlab,高斯过程回归及其应用.PDF
- linux设备驱动中的阻塞与非阻塞(二)
- Java+SQLServer实现——网上图书馆借还管理系统
- Python从入门到实战,我觉着拥有这三本书很有必要
- 书论20 袁昂《古今书评》
- 2023年全国最新二级建造师精选真题及答案62
- 焊武帝再爆肝造CPU,软硬件全自研,可玩游戏,基础器件成本不到1000元
- 如何用代码画出一幅好看的画
- xilinx官网下载vivado速度慢的解决方法(适用于所有版本)
- matplotlib画的折线图
热门文章
- python爬虫批量爬取乐愚社区精美壁纸
- 东京工业大学计算机博士要求,东京工业大学今4月起,研究生、博士申请新政策...
- 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
- terser是uglifyjs的升级版
- 无人车系统(十一):轨迹跟踪模型预测控制(MPC)原理与python实现【40行代码】
- Java开源技术分享:使用TopCode实现手指跟踪
- AutoJs学习-实现手指动作录制
- 扫地机器人石头爬坡_智能扫地机器人爬坡能力分析
- inout port 仿真
- 计算机毕业设计Java高校企业实训系统(源码+系统+mysql数据库+Lw文档)