笔记


类与对象

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。类的定义如下:

  1. 类是相同或相似对象的一种抽象,是对象的一个模板,它描述一类对象的行为和状态。
  2. 类是具有相同属性和方法的对象的集合。

类是对象的抽象,对象是类的具体

一个类可以包含以下类型变量:

  1. 局部变量:在方法、构造方法或语句块中定义的变量叫局部变量,方法结束后变量就会自动销毁。
  2. 成员变量:成员变量是定义在类中,方法体之外的变量。
  3. 类变量:也叫静态变量,声明在类中,方法体之外,static类型。

PS

  1. 局部变量的作用域仅限于定义他的方法内。而成员变量的作用域在在整个类内部都是可见的。
  2. 同时在相同的方法中,不能有同名的局部变量;在不同的方法中,可以有同名的局部变量。
  3. 成员变量和局部变量同名是,局部变量具有更高的优先级。

构造方法

  1. 构造方法的名称和类名相同,且没有返回值。
  2. 如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,这个构造方法什么也不会做。
  3. 当有指定的构造方法是,系统就不会再添加无参构造方法了。
  4. 构造方法的重载:方法名相同,但参数不同的多个方法。

static

静态成员或方法都可以直接调用


final

  1. final修饰类,则该类不允许被继承,为最终类
  2. final 修饰方法,则该方法不允许呗覆盖(重写)
  3. final 修饰属性,则该类的属性不会被进行隐式的初始化或在构造方法中赋值(选其一)
  4. final 修饰变量,则该变量的值只能赋一次值,即常量。

封装

封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别。


继承

继承可以看成是类与类之间的衍生关系。
extends(继承除开private方法和属性)

  • 子类拥有父类除了private以外的所有属性和方法
  • 子类可以拥有自己的属性和方法
  • 子类可以重写实现父类的方法
  • Java中的继承是单继承,一个类只有一个父类

super

  1. 访问父类的属性 super.属性名
  2. 访问父类方法
  3. 子类构造方法需要调用父类的构造方法时,在子类的构造方法体里最前面的位置:super()

方法重载

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。方法重载一般用于创建一组任务相似但是参数不同的方法。

规则:

  • 方法中的参数列表必须不同。
  • 访问权限,返回值类型和抛出异常都不同不能实现重载
  • 重载方法中允许抛出不同的异常
  • 可以有不同的返回值类型,但是参数列表必须不同
  • 可以有不同的访问修饰符

方法重写

子类可以继承父类的方法,但如果子类对父类的方法不满意,想在里面加入适合自己的一些操作时,就需要将方法进行重写。
ps:在方法重写时要注意,重写的方法一定要与原父类的方法语法保持一致,比如返回值类型,参数类型以及个数,和方法名都必须一致。


多态

多态是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。
例子:start1.test2


向上转型

子类继承于父类,子类可以向上转型为父类
父类 b=new 子类();
b是可以指向子类对象的

向上转型,在运行时,会遗忘子类对象中与父类对象中不同的方法,也会覆盖于父类中相同的方法——重写。


多态的实现条件

Java实现多态有三个必要条件:继承、重写和向上转型

实现方法

Java中多态的实现方法:继承父类进行方法重写,抽象类和抽象方法,接口实现。


抽象类

在定义类是,前面加上abstract关键字修饰的类叫抽象类。


接口

  • 接口不能用于实例化对象
  • 接口中方法只能是抽象方法、default方法、静态方法
  • 接口成员是static final类型
  • 接口支持多继承

多继承实现方法:
修饰符 interface A extends 接口1,接口2{
}
修饰符 class A implements 接口1,接口2{
}


内部类

将一个类的定义放在另一个类的定义内部,这就是内部类。而包含内部类的类被称为外部类。
内部类的主要作用如下:

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许用一个包中的其他类访问该类
  2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
  4. 内部类允许继承多个非接口类型

简而言之就是类中类

成员内部类的使用方法:

  1. 定义成员内部类后,必须使用外部类对象来创建内部类对象,即 内部类 对象名 =外部类对象.new 内部类();
  2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字

ps:成员内部类不能含有static的变量和方法,因为成员内部类需要先创建了外部类,才能创建他自己的。


静态内部类

静态内部类通常被称为嵌套类。

  1. 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员的方式访问。
  2. 如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可以通过成员名直接调用外部类的静态成员。
  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类 对象名=new 内部类();

局部内部类

局部内部类,是指内部类定义在方法和作用域中。


匿名内部类

匿名内部类,顾名思义,就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口。


package

Java基础0308相关推荐

  1. Java基础入门语法和安装

    1. Java概述 1.1 Java语言背景介绍(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Un ...

  2. Java笔记整理-02.Java基础语法

    1,标识符 由英文字母.数字._(下划线)和$组成,长度不限.其中英文字母包含大写字母(A-Z)和小写字母(a-z),数字包含0到9. 标识符的第一个字符不能是数字(即标识符不能以数字开头). 标识符 ...

  3. java基础(十三)-----详解内部类——Java高级开发必须懂的

    java基础(十三)-----详解内部类--Java高级开发必须懂的 目录 为什么要使用内部类 内部类基础 静态内部类 成员内部类 成员内部类的对象创建 继承成员内部类 局部内部类 推荐博客 匿名内部 ...

  4. Java基础概念性的知识总结

    属于个人的所学的知识总结,不是全面的 1.JDK.JRE和JVM三者的区别 01.JDK:(Java Development ToolKit)Java开发工具包,是整个Java的核心.包括了Java的 ...

  5. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  6. 叮!您收到一份超值Java基础入门资料!

    摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家J ...

  7. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  8. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  9. [Spring 深度解析]第1章 Java基础

    第1章 ◄Java基础► 在学习Spring之前我们需要对Java基础语法有一定的了解,Java中最重要的两个知识点是注解和反射.注解和反射在Spring框架中应用的最广泛.掌握注解和反射,有助于后面 ...

  10. 清华学长免费分享Java基础核心知识大总结(1)

    自学Java,如果觉得看<Java编程思想>或者<Core Java>等之类的"圣经"觉得内容太多,一下子吃不透的话,不妨看看这本<Java基础核心总 ...

最新文章

  1. AppleWatch开发教程之调试程序使用帮助文档
  2. python 第三方库 工具
  3. There is no tracking information for the current branch
  4. VS 2005 WEB PROJECT包括Crystal Report水晶报表的发布
  5. leetcode——344. 反转字符串
  6. Oracle EBS数据定义移植工具:FNDLOAD
  7. char*转wstring
  8. MonkeyRunner之小白如何使用MonkeyRecorder录制回放脚本
  9. 数据标注——VoTT的学习笔记
  10. quartus仿真系列3:74283的4位并行加法器
  11. oracle esb 灾备,两地三中心双活系统灾备切换场景和数据补录问题?
  12. 数组与List的相互转换
  13. UDK+VS2008搭建空工程
  14. PHP 谷歌翻译类API 接口
  15. 2021观澜二中高考成绩查询,深圳中学排名
  16. Layman数字土地指南
  17. 排序算法为什么要求稳定性
  18. 使用PN532向小米手环写入加密卡(复制门禁卡)
  19. HTML - label标签
  20. USACO-The Robot Plow G

热门文章

  1. mongo 监听指定语句
  2. 深入浅出InfoPath——如何在项目中引用GAC中的dll文件
  3. loopback-detection(环路检测)
  4. IPv4子网划分基础
  5. 网络工程师HCIE-RS-qos(原理+实验)
  6. python自动登录百度_Python实现自动登录百度空间的方法
  7. Kubernetes详解(十三)——Pod详解
  8. H3C OSPF 单区域、多区域(虚连接)配置
  9. Netty 核心组件 Pipeline 源码分析(二)一个请求的 pipeline 之旅
  10. JDBC连接池DBUtils