学习java第10天

Day10

昨日回顾

内部类:
成员内部类 类中 class Inner{}
静态内部类 类中 static class Inner{}
局部内部类 方法中
匿名内部类
多态:
事物的多种形态
前提:父类引用指向子类对象 继承关系 子类重写方法
向上转型 编译看左边 运行看右面
向下转型 子类类型 新的引用 = (子类类型)父类引用
恢复原来的权限,此时父类子类都可
继承的好处:代码可扩展

今日内容
抽象类
接口
匿名对象

抽象类
抽象方法
1、抽象:抽取像的、相同的、相似的内容出来
2、抽象方法:
在子类中,对同一个方法,不同的子类有不同的实现,不同子类中的这些方法,就只有方法声明是相同的,所以把方法名称抽取到父类中,就是抽象方法。
抽象方法:就是只有方法声明,没有方法实现的方法
3、定义格式:
(1)没有方法实现,连大括号都没有,通过分号结束方法
(2)为了将方法标记为抽象方法,需要在方法前面加上一个abstract关键字
格式:
abstract void 方法名();

抽象类
1、可以定义抽象方法的类,就是抽象类
2、定义格式:
abstract class 类名{

}

特点:

  1. 当一个类中定义了抽象方法,那么这个类也必须是抽象类
  2. 一个抽象类中,可以定义非抽象方法也可以一个抽象方法都没有
  3. 抽象类是不能通过new 直接创建对象,但是可以声明引用
  4. 抽象类的对象是存在的,是在创建其子类对象的时候,由jvm自动调用抽象类的构造方法创建的。
  5. 如果一个类继承抽象类,如果这个类不想成为抽象类,那么就必须实现抽象类中所有的抽象方法。

抽象类和抽象方法
1、抽象类和抽象方法都需要使用abstract关键字修饰
抽象类:在类前加abstract
抽象方法:是在抽象类中 方法前加abstract
2、抽象类和抽象方法的关系:
抽象方法必须在抽象类中
抽象类中可以没有抽象方法,甚至一个都没有,有成员方法…
3、抽象类的实例化(抽象类如何创建对象)
抽象类是不可以直接实例化,通过子类创建对象的方式
4、抽象类子类的前途
在子类中,将父类所有的抽象方法全部重写(实现),子类就成了一个普通类,就可以创建对象
在子类中,没有将父类中所有的抽象方法全部实现,子类就还是一个抽象类,还需要使用abstract关键字修饰子类。
抽象类成员特点
1、成员变量:可以定义变量,也可以定义常量,但是不能被抽象
2、构造方法:有
虽然本类无法创建对象,但是抽象类一定有子类,子类会访问父类的抽象方法。
是否有构造方法,不取决于是否可以创建对象,而是取决于是否可以定义成员变量。如果可以定义成员变量,那么就需要初始化成员变量,就是构造方法来完成的。
3、成员方法:
既可以是抽象方法:强制子类重写
也可以是非抽象方法:用于给子类继承,提高代码的复用性

接口
接口的概述
1、生活中的接口:usb 插座 type-c
2、广义:一切定义规则的都是接口
3、狭义:java中用于定义方法命名的规则就是接口
Java接口中,全都是方法的声明,都是抽象方法
Java接口就是一个特殊的抽象类,规定了接口的使用者和接口的实现者之间的一种协议
电脑(接口的使用者) ------ usb接口 ------ 鼠标(接口的实现者)
4、好处:
一旦将命名规则定义出来,【方法的调用】和【方法的实现】就分离开了,可以提升开发效率,降低代码的耦合性
接口的特点
1、接口的定义:使用interface关键字,编译也是生成一个【.class】文件
语法:
Interface 名称{

}

2、特点:

  1. 接口中的属性都是公开静态常量 ,接口中的方法都是公开抽象方法
  2. 接口中没有构造方法的
  3. 接口不能通过new 创建对象,而且接口的对象是不存在,接口可以声明引用。
    注意事项:
  4. 接口中的属性没有加任何的修饰符,默认也是公开静态常量(public static final修饰)
  5. 接口中的方法没有加任何的修饰符,默认也是公开抽象方法(public abstract 修饰)

接口的实现类
接口的实现类: 实现了接口的类
关键词: implements
语法:
class Dog implements 接口名{

}
特点:
一个类实现了一个接口,如果这个类不想成为抽象类那么必须实现接口中所有的抽象方法。
案例:

类与类、类与接口、接口与接口之间的关系
1、类与类
继承的关系,使用extends
可以单继承、不可以多继承、可以多层继承
2、类与接口:
实现关系,使用implements
可以单实现、也可以多实现
多实现的格式:
class 实现类类名 implements 接口1, 接口2, 接口3…{
重写所有接口中的所有抽象方法
}
多实现没有安全隐患:即使两个接口中有一样的方法声明,但是在类中也只有一个实现

在继承一个父类的前提下,还可以实现多个接口
格式: 	 
 	class 子类类名 extends 父类类名 implements 接口1, 接口2.....{
 	 	//重写父类和所有接口中的所有抽象方法

}
3、接口与接口:
继承关系,使用extends
可以单继承、也可以多继承、可以多层继承
多继承的格式:
interface 接口名 extends 父接口1, 父接口2…{
相当于继承了所有父接口的所有抽象方法
}

接口的应用
扩展类的功能
思想: java中的一个事物,具备了一个主要的角色 具备了多个次要的角色

狗 is a 动物 --------> 主要的角色(直接父类 )
狗 is a 食物 --------> 次要的角色 (接口)
狗 is a 宠物 --------> 次要的角色(接口)

接口的解耦合
强耦合: 两者之间的关系紧密
弱耦合: 两者之间的关系疏远

没有接口的时候,电脑的外设都是焊接在主板上的
电脑类Computer
属性:
鼠标Mouse
键盘Keyboard
显示器Display
行为
开机 :为所有的设备进行供电 让所有的设备都运行powerOn
鼠标类
运行的功能
键盘类
运行的功能
显示器类
运行的功能

通过接口进行解耦合
USB1个接口,抽象方法运行run() ,三个类实现接口重写运行方法,电脑类去设置接口和开机方法,最后通过set设置,通过开机方法输出。

抽象类和接口的区别
抽象类要被子类继承,接口要被类实现。
接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
抽象类中可以有普通成员变量,接口中没有普通成员变量,只能是公共的静态的常量。
抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。
抽象类可以有构造方法,接口中不能有构造方法。
一个类可以实现多个接口,但只能继承一个抽象类。
接口是设计的结果,抽象类是重构的结果。
匿名内部类
1、没有名字的内部类 {}
2、匿名内部类的使用前提:
匿名类:继承一个类
匿名类:实现一个接口
3、格式:
new 父类类名或者接口名() {
父类方法的重写或者是接口内容的实现
}
4、本质:
(1)创建了一个类的子类对象、接口的实现类对象
(2)更强调关系的一种写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值