安安静静学JAVA(三)

接口

1.接口是JAVA语言的一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK7及以前),默认方法和静态方法(JDK8),私有方法(JDK9)还可以存放自定义常量。

2一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口, 接口弥补了Java的单继承

1.格式:public indenfacet 接口名{

     //自定义常量【了解】
     public static final : 可以省略,默认存在

     //抽象方法【重点】
     public abstract :  可以省略,默认存在可以省略,默认存在

     //默认方法【理解】
     public default :实现类可以继承默认方法,实现类的对象可以直接调用接口的默认方法(可以省略,默认存在)
     
     //静态方法【理解】
     public static : 直接用接口名调用(可以省略,默认存在)

     //私有方法【理解】
     private :为当前接口的默认方法和静态方法服务(为了实现类的重写)

    //私有静态方法【理解】
     private static :

}

2.实现:public class 实现类 implements 接口 {}

3.注意:

类可以继承父类同时,再实现多个接口。
public class 类 extends 父类 implements 接口1, 接口2, 接口3 …

// 两个接口中自定义常量同名 -> 不会有冲突
// 两个接口中静态方法同名 -> 不会有冲突
// 两个接口中私有方法同名 -> 不会有冲突

// 两个接口中的抽象方法同名 -> 只需要重写一次
// 两个接口中的默认方法同名 -> 必须重写
// 父类中的普通方法和接口中的默认方法同名 -> 使用的是父类中的方法

4.类与接口的关系

  • 类与类是继承关系, 只能单继承
  • 类与接口是实现关系, 可以多实现
  • 接口与接口是继承关系, 可以多继承

多态

1.定义:指同一行为,具有多个不同表现形式

2.前提:

出现继承或者接口实现
方法重写(不重写没意义)
父类引用指向子类(实现)对象

3访问特点:

·访问成员变量(编译看左边,运行也看左边):基本不会遇到,因为成员变量都有私有了,使用的时候用get/set方法

·访问成员方法(编译看左边,运行看右边):

4.多态的好处与弊端:

·好处:如果调用参数列表(形式参数)是一个父亲,那么调用方法时传入的参数(形式参数)可以使用该父类所以的子类的对象。

·弊端:父类引用不能,直接使用子类特有的属性和行为

5.向上转型和向下转型:

  • 向上转型

    • 父类引用指向子类对象
    • 格式:
      父类类型 变量名 = new 子类类型();
      如:Animal a = new Cat();
  • 向下转型

    • 一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换格式
    • 格式:
      子类类型 变量名 = (子类类型) 父类变量名;
      如:Cat c =(Cat) a;

内部类

成员内部类

1.内部类使用外部类中的成员, 可以直接使用

2.外部类想使用内部类中的成员, 需要先创建对象

3.其他类想使用内部类中的成员, 需要创建内部类的对象(创建内部类对象的前提先有外部类的对象)
外部类名.内部类名 对象名 = new 外部类名().new 内部类名();

匿名内部类

  • 1.前提: 存在一个类或者接口

  • 2.格式:
    new 类名(){} => 代表继承了该类的子类对象

    new 接口名(){} => 代表实现了该接口的实现类对象

  • 3.注意:
    当调用方法的时候, 发现方法的形式参数是, 抽象类或者是接口,需要传入的就是它们的子类对象(子类对象就可以用 匿名内部类来表示)

应用数据类型的使用

1.引用数据类型可以作为方法的参数:
当方法的参数列表是一个类的时候, 需要传入的是: 该类的对象
当方法的参数列表是一个抽象类的时候, 需要传入的是: 抽象类子类的对象
当方法的参数列表是一个接口的时候, 需要传入的是: 该接口的实现类对象

  1. 引用数据类型可以作为方法的返回值:
    当返回值类型是类, 返回的就是该类的对象
    当返回值类型是抽象类, 返回的是它子类的对象
    当返回值类型是接口, 返回的是它实现类的对象

  2. 引用数据类型作为类中的成员变量
    String: 是引用数据类型, 作为成员变量

     抽象类和接口也可作为类中的成员变量
    

其它

idae:按F2 : 光标自动跳到报错位置

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值