一、二维数组

1、定义方式

m:代表当前二维数组中有多少个一维数组;n:代表每个一维数组的长度

(1)数据类型[][] 数组名=new 数据类型[m][n]

(2)数据类型[][] 数组名=new 数据类型[m][ ],只给定m个一维数组,每个一维数组长度动态给定。

(3)数据类型[][] 数组名={{元素1,元素2,......}...{......}},静态初始化。

(4)数据类型[] 数组名[]=new 数据类型[m][n]

(5)数据类型 数组名[][]=new 数据类型[m][n]

例如:

运行结果:

二、代码块

(1)概述:用{}括起来的统称为代码块。

(2)分类及其特点:

A、局部代码块:在main()方法里,限定变量的生命周期,外部不能访问局部代码块中的变量;

B、构造代码块:在一个类的成员方法中,用{}括起来,可将多个方法中相同代码块放到构造代码块中,对对象进行初始化,在每次执行构造方法之前,先执行构造代码块;

C、静态代码块:在一个类的成员位置中,用{}括起来,被Static修饰,一般情况下,用于给类进行初始化,并且只能执行一次。

(3)静态代码块,构造代码块,构造方法的执行流程:静态代码块>构造代码块>构造方法。

例如:

三、继承

1、概述:多个类存在相同属性或行为时,将这些内容抽取到一个单独的类中,多个类无需再定义这些属性或行为,只需要继承那个类即可。其中被继承的类称为父类、基类或超类,继承的类称为子类或派生类。

2、关键字:extends。

3、子类继承格式:

Class 子类名 extends 父类名{......}

4、设计原则:高内聚低耦合。内聚是指实现一个功能的能力(能用一个类完成的事情尽量不要用多个类去完成),耦合指类与类之间的关系,尽量降低耦合性。

5、继承特点:

(1)只支持单继承,不支持多继承(一个类只能有一个父类,不能有多个父类);

(2)支持多层继承(继承体系)。例如:

Class A{}

Class B extends A{}

Class C extends B{}

(3)子类继承父类,是继承了父类的所有成员(成员变量、成员方法,包括私有),但子类不能直接访问父类的私有成员,只能通过父类的公共访问方法间接的让子类去访问。

6、注意事项:

(1)子类可继承父类所有成员(成员方法、成员变量),但是父类中的私有成员,子类只能通过在父类中创建公有方法间接去访问,不能直接去访问;

(2)子类不能继承父类的构造方法,但可通过super关键字去访问父类构造方法;

(3)不能为部分功能而去使用继承,当类与类之间的关系体现的是“is a”的时候使用继承。

(4)例如:

7、super关键字

(1)super代表父类的空间标识(即父类的引用或父类的对象)。

(2)super与this类似,区别如下:

this:表示对本类的引用。

Super:代表父类存储空间的标识(可理解为父类引用)。

(3)用法(this与super均可如下使用):

A、访问成员变量:this.成员变量名、super.成员变量名

B、访问构造方法:无参:this()、super();有参:this(...)、super(...)

C、访问成员方法:this.成员方法()、super.成员方法()

8、继承中成员变量的关系

在子类方法中访问一个变量:(1)首先在子类局部范围找;(2)其次在子类成员范围找;(3)最后在父类成员范围找(绝对不能访问到父类局部范围)。

当子类中定义的成员变量与父类中的成员变量名称一致时,若用子类的方法访问该成员变量时,访问的是子类的成员变量。

9、继承中成员方法的关系

(1)子类访问父类,当成员方法名不一致的情况下,分别调用。

(2)当子类中成员方法名与父类中成员方法名一致的情况下:先在子类中的成员方法找,若有则调用,若无,则在父类中的成员方法找。

10、继承中构造方法的关系

(1)子类中所有的构造方法默认都会访问父类中空参数的构造方法。子类会继承父类中的数据,可能还会使用父类中的数据,所以子类初始化前一定要先完成父类数据的初始化,为实现这个效果,在子类构造方法的第一条语句上都默认有一个super()。

(2)若父类中没有构造方法,则:a、提供父类的构造方法;b、子类通过super关键字去显示访问父类其他的带参构造方法;c、子类通过this调用本类的其他构造方法(有参构造),间接访问父类的带参构造方法(子类必须有一个带参构造方法或无参构造方法,让父类进行初始化。

(3)注意:super和this都默认在构造方法中的第一句且必须在第一句,否则会有父类数据的多次初始化,可省略。

11、继承中初始化

(1)初始化方式:分层初始化。

(2)初始化顺序:子类继承父类,父类先进行初始化,子类再进行初始化。

(3)例如:

12、继承优点

(1)提高了代码的复用性(多个类相同的成员放在同一个类中);

(2)提高了代码的维护性(若功能代码需要修改,修改一次即可);

(3)多态的前提,让类与类之间产生了关系。

四、多态

1、多态概述:多态是指允许不同类的对象对同一消息作出响应。即同一消息可根据发送对象的不同而采用多种不同的行为方式(发送消息指方法调用)。

2、多态前提

(1)必须有继承关系;

(2)必须有方法重写(方法覆盖);

(3)必须有父类的应用指向子类对象(向上转型):父类名 对象名=new 子类名();。

3、多态中的访问特点

(1)成员变量:编译看左,运行看左;

(2)成员方法(非静态):编译看左,运行看右(存在方法重写);

(3)成员方法(静态):编译看左,运行看左(静态和类相关,算不上方法重写);

(4)构造方法:构造方法无论是子类还是父类,都是对对象进行初始化。

4、向上转型/向下转型

(1)向上转型:将父类的引用指向子类对象,父类名 父类引用=new 子类名()。

(2)向下转型:将子类的应用指向父类引用,子类名 子类引用=(子类名) 父类引用,向下转型前提是必须有父类引用,若使用不当,会出现运行时期异常,即ClassCastException。

(3)举例:

5、多态优势

(1)提供代码的复用性,由继承保证;

(2)提供代码扩展性,由多态保证。

6、多态弊端

(1)弊端:无法访问子类的特有功能。

(2)解决方案:利用向下转型,即将子类的应用指向父类引用,子类名 子类引用=(子类名) 父类引用,向下转型前提是必须有父类引用,若使用不当,会出现运行时期异常,即ClassCastException。

7、final关键字

(1)概述:final,最终的,终态的(不能被修改)。

(2)作用:可修饰类、成员方法、变量。

(3)特点:a、可修饰类,但该类不能被继承,所以声明类时不能和abstract同时存在;b、可修饰成员方法,但成员方法不能被重写;c、可修饰变量,此时变量为常量,不能被修改;d、被final修饰只能赋值一次;e、被final修饰时进行初始化和赋值是在使用之前;f、final既可修饰基本数据类型,也可修饰引用数据类型,若修饰基本数据类型,基本数据类型的值不可被改变,若使用引用数据类型,引用数据类型的地址值不能被改变,但堆内存中的成员变量值可改变。

(4)final关键字的面试题:

面试题:final、finally、finalize三者区别?

回答:A、final修饰符(关键字),主要用来修饰类、成员方法,变量等,表示终态的,最终的。主要作用a、可修饰类,但该类不能被继承,所以声明类时abstract不能和final同时存在;b、可修饰成员方法,但成员方法只能使用不能被重写;c、可修饰变量,此时变量为常量,不能被修改而且必须在声明时给出变量的初始值。

B、finally是在异常处理时提供finally块来执行任何操作。无论有无异常抛出、捕获,finally块都会被执行。所以在代码逻辑块中若有无论发生什么都必须执行的代码,就放在finally块中。

C、finalize是方法名。Java技术允许使用finalize()方法在垃圾回收器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。该方法在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行的其他清理工作。Finalize()方法是在垃圾回收器删除对象之前对这个对象调用的。

五、抽象类

1、概述:如果一个类中有一个方法声明抽象功能(抽象方法),则这个类定义为抽象类。其中一个类若有抽象方法,则这个类一定为抽象类;抽象类中不一定都是抽象方法。

2、关键字:abstract

3、抽象类的子类

(1)当子类为具体类时,子类必须实现父类中的抽象功能。

(2)当子类为抽象类时,无意义,不能实例化,不能创建对象。

4、特点:抽象类不能直接实例化,即不能创建对象。

5、抽象类成员特点

(1)成员变量:可以是常量,也可以是变量。

(2)成员方法:可以有抽象方法,也可以有非抽象方法。

(3)构造方法:可以有无参构造方法,也可以有有参构造方法,作用:给对象进行初始化。

6、不能与abstract共存的关键字:private、final、static。

7、举例:抽象类:

子实现类:

测试类:

六、接口

1、概述:接口是事物扩展×××的一个体现。

2、关键字:interface

3、格式:interface 接口名{//抽象功能}

4、接口的子实现类格式:class 类名+impl implements 接口名{}

5、特点:不能实例化。

6、接口成员特点

(1)成员变量:是一个常量,不能修改,并且有默认修饰符public static final;

(2)构造方法:接口不存在构造方法;

(3)成员方法:不能有方法体,都是抽象方法,有默认修饰符:public abstract。

7、接口、类的关系

(1)类与类之间的关系:继承关系,只支持单继承,不支持多继承,可以多层继承。

(2)类与接口的关系:实现关系,一个类继承另一个类的同时,还可以实现多个接口。

(3)接口与接口的关系:是一种继承关系,既可以单继承,也可以多继承。

8、接口与抽象类的区别

(1)成员区别

成员变量:

抽象类:既可以常量,也可以是变量。

接口:只能是常量,默认的修饰符:public static final

构造方法:

抽象类:有构造方法,无参/有参 (给对象进行初始化的)。

接口:无构造方法。

成员方法:

抽象类:可以有抽象方法,也可以有非抽象方法。

接口:只有抽象方法 ,默认的修饰符:public abstract

(2)类与类/类与接口/接口与接口关系的区别

类与类之间的关系:继承关系,只支持单继承,不支持多继承,可以多层继承。

类与接口的关系:实现关系,一个类继承另一个类的同时,还可以实现多个接口。

接口与接口的关系:是一种继承关系,既可以单继承,也可以多继承。

接口1 extends 接口2,接口3...接口 n

(3)设计原则的区别

抽象类:继承关系,体现的是一种"is a"的关系(A是B的一种)。

接口:类和接口,实现关系,体现的是一种" like a"的关系(扩展功能)。

9、实际开发中使用频率

(1)接口多态:使用最多。

(2)抽象类多态:比较多。

(3)具体对象的创建:经常会使用。

10、举例

抽象类:

子实现类学生:

子实现类老师:

接口+测试:

七、内部类

1、概述:在B类内部定义A类,则A类为B类的内部类。

2、内部类访问外部类:内部类可直接访问外部类的成员,包括私有成员。

3、外部类访问内部类:通过创建内部类对象的方式间接访问。

访问格式:外部类名.内部类名 对象名=外部类对象.内部类对象。

例如:

4、分类

(1)成员内部类:在外部类的成员位置。可直接访问外部类的成员,包括私有成员。

成员内部类修饰符:A、private:(作用)保证了数据的安全性。B、static:把静态内部类看成外部类成员,其特点是静态内部类访问外部类数据,该数据必须用static修饰。

例如:

(2)局部内部类:在外部类的局部位置。可访问外部类的成员,包括私有。在外部类的局部位置去访问内部类的成员方法时,需要在局部位置创建内部类对象,通过对象去访问。

例如:

(3)匿名内部类

A、前提:有类(该类可以是具体类也可以是抽象类)或接口。

B、格式:new 类名或接口名{ 方法重写();}

C、本质:继承了该类或实现了该接口子类对象。

D、匿名内部类面试题:补全代码,在控制台上输出(“Hello World”)。截图如下:

八、形式参数与返回值

1、概述:形式参数是基本类型,对实际参数无影响;形式参数是引用类型(类、抽象类、接口),影响实际参数,情况如下。返回值是基本类型时,用对应的基本类型接收数据即可;返回值若为引用类型,情况如下。

2、形式参数为具体类:需要提供该类对象。

返回值:该类对象。

例如:

3、形式参数为接口:需要提供接口的子实现类,通过子实现类进行实例化(接口多态)。

例如:

4、形式参数为抽象类:需要提供该抽象类的子类,以抽象类多态的形式创建对象。

返回值:需要当前抽象类的子类对象(抽象类多态)。

例如:

九、overload与override区别

(1)overload:方法重载,方法名一样,参数不同(个数或类型不同),与返回值无关。

(2)override:方法重写,子类定义一个与父类一样的方法声明,继承中使用。

java成员方法的一般格式为_Java基本知识(四)相关推荐

  1. java中sql 语句格式转换_Java字符串转Sql语句In格式工具方法

    /** * 工具-字符串-转换Sql查询IN中使用的格式 * 效果:a,b==>'a','b' * @param str * @return */ public String strToDbin ...

  2. java class 字符串_java基础知识四 math类 字符 字符串 控制台输入输出 StringBuilder与StringBuffer...

    第四章:数学函数.字符和字符串 math类 Math是final类:在java.lang.Math中,所有数学函数都是静态方法 在一个java程序中,java.lang包中的所有类是隐式导入的. 三角 ...

  3. java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象

    上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它 这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础 ...

  4. Java实验实现一个circle类_Java实验报告四

    Java实验报告四 一.题目 1.根据下面的要求实现圆类Circle. 1).圆类Circle的成员变量:radius表示圆的半径. 2).圆类Circle的方法成员: Circle():构造方法,将 ...

  5. java中math类的作用_Java开发知识之Java的数字处理类Math类

    Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...

  6. java用输入流创建数据文件_java开发知识IO知识之输入输出流以及文件

    java开发知识IO知识之输入输出流以及文件 一丶流概述 流十一组有序的数据序列.根据操作的类型,可以分为输入流跟输出流两种. IO(input/output)输入/输出流提供了一条通道程序.可以使用 ...

  7. java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根

    * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 作 者: 刘镇 * 完成日期: 2012 年 11 ...

  8. java get请求url拼接参数_Java 基础知识复习

    一. get和post的区别 get是从服务器上获取数据(http与服务器交互的查),post是向服务器传递数据(http与服务器交互的改). get传送的数据量比较小,post传送数据量比较大,默认 ...

  9. java如何使用线程锁的_Java线程知识:二、锁的简单使用

    锁的初步认识 说到锁,相信大家都不陌生,这是我们生活中非常常见的一种东西,它的形状也各式各样.在生活中,我们通常用锁来锁住房子的大门.装宠物的笼子.装衣服的衣柜.以及装着我们一些小秘密的小抽屉.... ...

最新文章

  1. php 静态类内存,php面向对象中static静态属性与方法的内存位置分析
  2. #Node.js的fs导入遇到的问题和解决方案
  3. c语言font6x8,爱字体下载安卓版-iFont爱字体下载V5.9.8.6 安卓手机版-全新的手机字体软体西西软件下载...
  4. [PY3]——字符串的分割、匹配、搜索方法总结
  5. 纪念一下我2020年的努力结果,腾讯云社区创作总结
  6. Sql server日期函数操作
  7. 前台文件_欧木瑾怎么定制办公前台?
  8. java移动接口发短信_Java面试零碎知识点
  9. 自建服务器同步软件,自建Syncthing中继服务器(私密传输或造福大众)
  10. 阿里Q2财报:阿里云势头猛进领跑全球
  11. 再论微服务架构之七宗罪
  12. matleb2016A安装教程
  13. CSS行内样式内部样式外部样式
  14. Android WebView 无法下载文件的问题
  15. hx711基本原理讲解
  16. 《点满舔狗相关技能以后,不知为何就转码了》之YOLOP,YOLOPV2推理入门教学
  17. 4.3 期货每日早盘操作建议
  18. 文本相似度 Text Similarity
  19. R语言与克朗巴哈alpha系数
  20. mac终端提示You have not agreed to the Xcode license agreements.

热门文章

  1. Vue 计算属性与侦听器
  2. Django 缓存系统
  3. 适用响应式 Web UI 框架
  4. Android:SharedPreferences详解+示例
  5. php curl json post请求_php post请求发送json对象数据参数
  6. vue 监听map数组变化_解决vue无法侦听数组及对象属性的变化问题
  7. 输入年份和月份输出该月有多少天python_Python实现用户输入年月日,程序打印出这是这一年的第多少天...
  8. docker 指定网卡_Docker | Docker技术基础梳理(五) Docker网络管理
  9. c理c利用计算机怎么弹,通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...
  10. 嵌入式Linux初始化硬件RTC,嵌入式Linux系统中的快速启动技术研究