java编程 Javase05

一、继承

1、继承的概述:

继承是多态的前提,如果没有继承就没有多态。继承主要解决的问题就是:共性抽取。

2、继承的格式

在继承的关系中,子类可以被当作父类看待。

例如:父类是员工,子类是讲师,那么“讲师就是一个员工”

定义父类的格式:(一个普通的定义)

pubilc class 父类名称{

           //...

}

定义子类的格式:

public class 子类名称 extends 父类名称{

           //...

}

3、继承中成员变量的访问特点。

(1)创建父类对象只能访问父类对象的内容,创建的子类对象除访问自己本身的内容外还可访问父类当中的内容。

(2)在父子类的继承关系当中,如果成员变量重名,则创建子类对象时访问有两种格式:

01、直接通过子类对象访问成员变量:等号左边是谁,就优先使用谁,没有则向上查找。

02、间接通过成员方法访问成员变量:方法属于谁,就有先用谁,没有则向上查找。

(3)如何区分三种变量的重名问题

局部的变量:直接写

本类当中的成员变量:this.变量名

父类当中的成员变量:super.变量名

 4、继承中成员方法的访问特点:

创建的对象是谁。就优先用谁,如果没有则向上找。无论是成员方法还是成员变量,如果没有都是向上找父类,不会向下找子类。

5、继承中方法的覆盖重写

(1)概念与特点

01、定义:在继承关系当中,方法的名称一样,参数的列表一样。重载当中方法的名称一样,但参数的列表不一样。

02、特点:创建的是子类对象,则优先用子类方法。

(2)注意事项

01、必须保证父子类之间方法的名称相同,参数的列表也相同。

@Override:写在方法前面用来检测是不是有效的正确覆盖重写。

02、子类方法的返回值必须小于等于父类方法的返回值范围。

Object类是所有类的公共最高父类。

03、子类方法的权限必须大于等于父类方法的权限修饰符。

public>protected>(default即什么都不写)>private

(3)应用场景

6、继承中构造方法的访问特点

(1)子类构造方法当中有一个隐含的super()调用(只能调用无参的构造方法),所以一定先执行父类构造方法,再执行子类的构造方法。

(2)子类构造可以使用super关键字来调用父类重载构造。

(3)super的父类构造调用,必须是子类构造方法的第一个语句。也就是不能一个子类构造调用多次super构造。

(4)子类必须调用父类构造方法,不写则赠送super();写了则用写的指定super调用,super只能有一个还必须是第一个。

7、super关键字三种用法

(1)在子类的成员方法中,访问父类的成员变量。

(2)在子类的成员方法中,访问父类的成员方法

(3)在子类的构造方法中,访问父类的构造方法。

8、this关键字的用法

(1)在本类的成员方法中,访问本类的成员变量。

(2)在本类的成员方法中,访问本类的另一个成员方法。

(3)在本类的构造方法中,访问本类的另一个构造方法。

注意:01、在第三种方法当中,this调用也必须是构造方法的第一个语句,唯一一个。

          02、super和this两种构造调用不能同时使用

9、super与this关键字的内存图解

10、Java继承的三个特点

(1)Java语言是单继承的:一个类的直接父类只能有一唯一个。

(2)Java语言可以多级继承

java.lang.Object类为最高类

(3)一个子类的直接父类是唯一的,但是一个父类可以拥有很多子类。

二、抽象

1、抽象的概述

如果父类当中的方法不确定如何进行{}方法体实现,那么这应该就是一个抽象方法。

2、抽象方法和抽象类的格式

(1)抽象方法:加上abstract关键字,然后去掉大括号,直接分号结束。

(2)抽象类:抽象方法所在的类,必须是抽象类才行,在class前加上abstract就可以。

3、抽象方法和抽象类的使用

(1)不能直接创建new抽象类对象。

(2)必须用一个子类来继承抽象类。

(3)子类必须覆盖重写抽象父类当中的所有抽象方法

覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。

(4)创建子类对象进行使用。

(5)注意:

01、抽象不能直接创建对象。

02、抽象类中可以有构造方法,是供子类创建对象时,初始化父类使用的。

03、抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。这样没有抽象方法的抽象类,也不能直接创建对象,在一些特殊场景下有用途。

04、抽象类的子类必须重写抽象父类中所有的抽象方法。

注意Alt+Enter的使用

三、接口

1、接口的概述

接口就是一种公共的规范标准。只要符合规范标准,就可以大家通用。

2、接口定义的基本格式

(1)接口就是多个类的公共规范,接口是一种引用数据类型。接口中最重要的内容就是其中的抽象方法。

(2)接口格式:

public interface 接口名称{

          //接口内容

}

注意:换成关键字interface之后,编译生成的字节码文件仍然是:.java - ->.class

(3)包含内容:

常量、抽象方法、默认方法、静态方法、私有方法等等。

(4)接口当中抽象方法的定义

         创建时将种类改为接口即可。

格式:

public abstract 返回值类型 方法名称 (参数列表);

注意:

01、接口当中的抽象方法,必须是两个固定的关键字public abstract

02、这两个关键字修饰符可以选择性的省略

03、方法的三要素可以随意定义。

(5)接口的抽象方法使用

01、接口不能直接使用,必须有一个“实现类”(类似于子类)来“实现”该接口。

格式:

public class 实现类名称 implements 接口名称{

          //...

02、接口的实现类必须覆盖重写(实现)接口中所有的抽象方法。

去掉 abstract 关键字,加上方法体大括号。

03、创建实现类的对象,进行使用。不能直接new接口对象进行使用。

注意:如果实现类并没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类。

(6)接口的默认方法

01、定义

格式:

public default 返回值类型 方法名称(参数列表){

           方法体;

}

注意:接口当中的默认方法可以解决接口升级的问题。其中的public可以省略。

接口升级:新增加抽象方法。

02、使用

  • 默认方法会被实现类继承下去。调用默认方法时,如果实现类当中没有,向上寻找接口。
  • 接口的默认方法,可以通过接口实现类对象,直接调用
  • 接口的默认方法,也可以被接口实现类进行覆盖重写。

(7)接口的静态方法

01、定义

格式:

public static 返回值类型 方法名称 (参数列表){

         方法体

}

02、使用 

  • 不能通过接口实现类的对象来调用静态接口中的静态方法。
  • 正确用法:通过接口名称,直接调用其中的静态方法。
  • 格式:静态方法名(参数);

(8)接口的私有方法

01、定义:分为两类

1、普通私有方法:解决多个默认方法之间重复代码问题。

格式:

private  返回值类型 方法名称(参数列表){

             方法体

}

2、静态私有方法:解决多个静态方法之间重复代码问题

格式:

private static 返回值类型 方法名称(参数列表){

            方法体

}

02、使用

接口的私有方法只能在接口当中使用,若果需要使用私有方法,直接进行调用即可。

(9)接口的常量(‘ 成员变量 ’)

01、定义:

格式:

public static final 数据类型 常量名称=数据值;

注意:1、接口当中的常量一旦赋值后,不可以修改,一旦使用final关键字进行修饰,说明不可改变。接口当中的常量可以省略public static final 。

          2、接口当中的常量必须进行赋值,不能不赋值。

          3、接口中常量的名称使用完全大写的字母,用下划线进行分隔。

02、使用

访问接口当中的常量:接口名称.常量

(10)使用接口的注意事项

01、接口不能有静态代码块和构造方法

02、一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。

格式:

public class 类名称 implements 接口名称1,接口名称2...{

          覆盖重写所有的抽象方法(Alt+Insert+Enter)

}

03、如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需覆盖重写一次即可。

04、如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是抽象类。

05、如果实现类所实现的多个接口中,存在重复的默认方法,那么实现类就必须对冲突的默认方法覆盖重写。

06、一个类如果直接父类当中的方法,和接口当中的默认方法产生冲突,那么它会优先使用父类当中的方法。继承优先于接口实现。

(11)接口之间的多继承

01、类与类之间是单继承的。直接父类只有一个。

02、类与接口之间是多实现的。一个类可以实现多个接口。

03、接口与接口之间是多继承的。

public Interface 子接口名称1 extends 父接口名称1,父接口名称2......{

            接口内容

}

04、注意事项:

1、多个父接口之间的抽象方法如果重复,没有影响。

2、多个父接口之间的默认方法如果重复,则需要在子接口必须进行默认方法的覆盖重写。而且需要default关键字。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值