JAVA学习笔记

文章描述:-2022年4月13日发(作者:柯氏)JAVA学习笔记—面向对象——11-2-16分享1、JAVA继承中方法的重写:子类中要重写的方法权限必须大于父类中方法的权限,调用父类中方法用()2、继承中属性的覆盖:父类和子类中都有公共属性info,但是并不覆盖,可以通过和调用书:如果子类和父类中声明了相同名称的属性,则在子类中直接访问时采取就近原则,先本类中的属性3、super关键字的作用可以从子类中调

-

JAVA学习笔记
2022年4月13日发
(作者:柯氏)

JAVA学习笔记—面向对象——11-2-16

分享

1、JAVA继承中方法的重写:

子类中要重写的方法权限必须大于父类中方法的权限,调用父类中方法用()

2、继承中属性的覆盖:

父类和子类中都有公共属性info,但是并不覆盖,可以通过和调用

书:如果子类和父类中声明了相同名称的属性,则在子类中直接访问时采取就近原则,先

本类中的属性

3

super关键字的作用

可以从子类中调用父类中的构造方法、普通方法和属性,与this调用构造方法的要求一样,

语句必须放在子类构造方法的首行

完整的代码示例:

输出:

this与super的区别:

序号区别点this

访问本类中的属性,如果本类中没有此属性,

1属性访问

则从父类中继续查

同属性访问,如果本类中没有此方法,

2方法

则从父类中查

3调用构造

4特殊

调用本类构造,必须放在构造方法首行

表示当前对象

super

访问父类中的属性

直接访问父类中方法

调用父类构造,必须

放在子类构造方法首行

无此概念

无论子类如何操作,最终必须要先调用父类中的构造方法

4、final关键字

声明需要注意的:

使用final声明的类不能被继承

使用final声明的方法不能被子类重写

使用final声明的变量即成为常量,不可修改

使用final声明常量时,要求全部字母大写

5、抽象类

抽象类的作用类似模板,不能直接由抽象类创建对象,只能通过抽象类派生新的类

抽象类——单继承

定义、使用规则:

包含一个抽象方法的类必须是抽象类

抽象类和抽象方法都要用abstract关键字声明

抽象方法只需声明不需要实现

抽象类必须由子类继承,子类(如果不是抽象类)必须重写抽象类中的全部抽象方法

下面是一个抽象类操作的示例:

抽象类中定义构造方法:

实例化继承抽象类的子类时,先调用抽象类的构造方法,在调用子类的构造方法,即在子类

的构造方法第一行有super(),也可通过super(parameterA,parameterB)调用抽象类构

造方法

6、接口

一种特殊的类,由全局常量和公共抽象方法组成接口方法访问权限都默认为public

简化为:

接口的实现:通过继承,子类通过implements关键字实现接口

class子类implements接口A,接口

B{

}

子类可同时实现多个接口,多继承

示例:

在子类中必须重写接口中的全部抽象方法

继承抽象类实现接口:

JAVA中允许一个抽象类实现多个接口

接口不允许继承抽象类

一个接口继承多个接口

7、对象多态性

JAVA中面向对象的体现:

(1)、方法的重载与覆写

(2)、对象的多态性

对象的多态性:

(1)、向上转型:子类对象->父类对象格式:父类父类对象=子类实例

(2)、向下转型:父类对象->子类对象格式:子类子类对象=(子类)父类实例

向上转型:程序会自动完成

向下转型:需要明确指明要转型的子类类型

向上转型:

父类对象调用的是被子类覆写过的方法,但是无法调用子类特有方法

向下转型示例:

如果想调用子类自己的方法,则只能用子类声明对象

在子类中调用了父类中的fun2()方法,fun2()要调用fun1()方法,但是fun1()已经被

子类重写,所以调用的是被重写过的方法

对象向下转型的要求:向下转型前必须先进行向上转型

多态性实现:

在fun()方法中运用了对象多态性,可以接受任意子类对象,这样无论子类做何改变,函

数都不用变,原因:发生对象向上转型后,调用的方法是被子类覆盖过的方法

8、instanceof关键字

作用:判断对象是否是某一个类的实例,返回boolean值

9、抽象类的实际运用:

10、接口的实际运用——制定标准

接口是JAVA解决多继承局限的一种手段

思想:先定义一个USB接口类,有开始工作、停止工作功能,然后定义一个设备工作过程

的类,参数为USB派生的类,设备工作时,USB开始工作,然后设备停止工作。有USB接

口继承的两个类Flash、Printer,他们的工作过程都通过Computer类的函数实现

11、设计模式——工厂设计

工厂设计是JAVA开发中使用得最多的一种设计模式

非工厂设计示例:

问题:如果需要更换子类,则必须修改主方法

解决方法:在接口与具体子类之间加入一个过渡端,通过过渡端取得接口实例,这个过渡端

即工厂类

改进后示例代码:

有一个工厂类Factory,通过判断参数属于哪个类别实例化具体的子类,然后返回子类对象,

再在主方法里面引用子类对象方法

要点:比较字符串内容时为什么把字符常量写在前面?——避免空指向一异常,即对象为

null时调用方法时出现空指向异常

12、设计模式——代理设计

代理设计也是在JAVA开发中使用的较多的一种设计模式

代理设计:由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负

责其它相关业务的处理

不大懂,慢慢琢磨着

13、设计模式——适配器设计

问题:如果一个类要实现一个接口,就必须重写接口中的全部抽象方法,但是如果又没有必

要全部重写,这就需要一个中间的过渡类,过渡抽象类,一个接口首先被一个抽象类(适配

器类)实现,并在此抽象类中实现若干方法(方法体为空),则以后的子类直接继承此抽象

类,就可以有选择重写所需要的方法

示例代码:

先定义一个包含所有方法的接口类,然后定义一个继承这个接口的抽象类,方法体全部为空,

然后再定义一个具体的操作类,实现某些需要的方法

14、内部类的扩展

在抽象类中也可以定义多个接口或抽象类,在一个接口中也可以定义多个抽象类或接口

15

、抽象类与接口之间的关系

序号区别点

1定义

2

3

4

5

6

组成

使用

关系

常见设计模式

对象

抽象类

包含一个抽象方法的类

构造方法、抽象方法、

普通方法、常量、变量

子类继承抽象类extends

接口

抽象方法和全局常量

常量、抽象方法

子类继承接口impl

接口不能继承抽象类,

抽象类可以实现多个接口

继承多个接口

模板设计工厂设计、代理设

都通过对象的多态性产生实例化对象

7

8

9

10

局限

实际

选择

特殊

抽象类有单继承局限接口没有此局限

作为一个模板作为接口或表示一种

如果抽象类和接口都可以使用,则优先使用接口,避免单继承

一个抽象类中可以包含多个接口,一个接口可以包含多个抽

原则:一个类不要去继承一个已经实现好的类,只能继承抽象类或实现接口,如果接口和抽

象类都可以使用,那么优先使用接口,避免单继承局限

16、Object类

JAVA中所有类都有一个公共的父类Object,一个类只要不是明显的继承一个类,则肯定是Object类的子类

Object类中的主要方法:

序号方法名称

1publicObject()

2publicbooleanequals(Objectobj)

3publicinthashCode()

4publicStringtoString()

g3个方法。

类型描述

构造构造方法

普通对象比较

普通取得Hash码

普通对象打印时调用

用处:对于一个设计良好的类来说,最好重写Object类中的equals、hashCode、toStrin

equals()方法的功能就是对象的比较,实际上String也是Object类的子类,所以在Stri

ng中已经实现了此方法,如果现在一个类需要实现对象比较操作,则直接在类中重写此方

法即可

Object类提供的equals()方法默认是比较地址而非内容

Object类在实际开发中的作用:

因为Object类可以接收任意的引用数据类型,所以在很多的类库设计上都采用Object作

为方法的参数,这样操作起来会比较方便

17、包装类

JAVA设计中的思想:一切皆为对象

矛盾:数据类型分为基本数据类型和引用数据类型,但是基本数据类型不能够称为对象

此时就需要将基本数据类型进行包装,将8种数据类型变为一个类的形式,也就是包装类的

作用

包装类与基本数据类型的关系:

序号

1

2

3

4

5

6

7

8

基本数据类型

int

char

short

long

float

double

boolean

byte

包装类

Integer

Character

Short

Long

Float

Double

Boolean

Byte

包装类中的继承关系:(JDK文档中有)

(1)、Integer、Byte、Float、Double、Short、Long都属于umber类的子类,umber类本身提供了一系列的返回以上6种数据类型的操作

(2)、Character、Boolean属于Object类的直接子类

umber类是一个抽象类,主要是将数字包装类中的内容变为基本数据类型

umber类中定义的方法:

序号方法

1publicbytebyteValue()

2publicabstractdoubledoubleValue()

3publicabstractfloatfloatValue()

4publicabstractintintValue()

5publicabstractlonglongValue()

6publicshortshortValue()

装箱与拆箱:

装箱操作:讲一个基本数据类型变为包装类

拆箱操作反过来将包装类变为基本数据类型

装箱及拆箱操作:

类型描述

普通以byte形式返回指

普通以double形式返回

普通以float形式返回指

普通以int形式返回指

普通以long形式返回指

普通以short形式返回指

自动装箱及拆箱操作:

包装类的应用:

应用最多的是字符串变为基本数据类型的操作,在Integer和Float类中分别提供了一下

两种方法:

(1)、Integer类(字符串转int型)

publicstaticintparseInt(Strings)throwsumberFormatException

(2)、Float类(字符串转float型)

publicstaticfloatparseFloat(Strings)throwsumberFormatException

18、匿名内部类

指没有一个具体名称的类,是在接口和抽象类应用上发展起来的

非匿名内部类示例:

问题:如果接口的实现类只是用一次,就没有必要单独应以一个子类B了

修改后:

newA()实现接口,但是接口不能直接实现,所以后面应该有{}解释实现方法,即print

Info()函数重写

19、要点:

JAVA在执行子类的构造方法前会先调用父类中无参数构造方法,目的是为了对继承自父类

的成员做初始化操作

在父类中用final修饰的方法不能被子类覆写

全局常量:publicstaticfinal

抽象类的方法可分为两种,一种是一般的方法,另一种是抽象方法

接口同一般类也可以通过扩展派生出新接口。原接口称为基本接口或父接口,扩展为派生接

口或子接口。通过这种机制,派生接口可以保留父接口成员,也可根据需要加入新成员

JAVA对象的多态性:向上转型(自动)和向下转型(强制)

匿名内部类作用:利用内部类创建无名称对象,并利用它方法类中其他成员

理解还不是让人满意,隔天吧,补上,加深理解,慢慢理解……

-

JAVA学习笔记

发布时间:2022-04-13 03:18:03
文章版权声明:除非注明,否则均为IT技术网-学习WEB前端开发等IT技术的网络平台原创文章,转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (有 6 条评论,200人围观)

最近发表

随便看看

热门文章

标签列表