day18-interface

day18-面向对象(interface)

一、static关键字

1、修饰属性【重点】

​ 静态的属性:属于类,仅一份。所有的对象共享。

​ 应用:如果该类的所有的对象的这个属性值都相同,就可以设计为静态的属性。节省内存,便于修改。

2、修饰方法【重点】

​ 静态的方法:属于类,由类直接调用,方法里不能访问对象的内容(属性,方法),以及this和super关键字。

​ 继承中,子类可以继承父类的静态方法,但是不能重写。

​ 应用:如果方法中,没有涉及到对象的内容或者this和super,那么方法就可以设置为静态的方法。由类直接调用,方便。

工具类:一个类中的方法,看成工具。

Arrays类:数组的工具类。都是操作数组的常用功能。

3、修饰代码块

4、修饰内部类

1.1 类加载(拓展)

类加载就是第一次调用这个类的时候,需要通过classpath找到类的.class文件。将class文件中类的信息描述加载到内存中。

​ 比如:包名,类名,父类,属性,方法。。。

加载类时机:

  • 创建对象
  • 创建子类对象
  • 访问静态属性
  • 访问静态方法
  • 主动加载:Class.forName(“包名.类名”);

1.2 static修饰代码块(了解)

代码块:一块代码。以{}为范畴。

1、局部代码块,就是普通的代码块,{}。注意点:作用域

​ if语句:if(条件){。。。。}

​ if,for,while,do-while,switch-case。。。{}

2、构造代码块:类里,方法外的代码块。

​ 执行时机:当构造方法被调用的时候,构造代码块就执行。而且是优先于构造方法执行的。如果创建多个对象,就执行多次。

​ 应用:可以为非静态的属性进行统一赋值。

3、静态代码块:在代码块前加static关键字。

​ 执行时机:初始化程序,只要类文件加载,静态代码块就会被执行。仅执行1次。在main函数之前执行。。

​ 应用:可以为静态属性进行赋值。

4、同步代码块:多线程

知道:执行顺序。

二、接口

2.1 生活中的接口

USB接口,
插座,
type-c接口,解决了世界性的大难题:"USB设备永远插不准。。",随便插。。
网线,ARJ45
lightning接口,就是苹果充电接口。。
HDMI接口,
3.5mm,耳机。。。
。。。
这些接口有啥用?
	定义标准,定义规范。
	以USB接口为例:
	1、鼠标,U盘,移动硬盘,键盘。。。
	2、都是USB设备
	3、都能够通过USB接口,接入电脑中,可以去干活。。
	
大家都遵守的统一的规则,就是USB接口,就能够连入到电脑中。。。。

2.2 接口的概念

  • 从语法的角度:接口是一种特殊的抽象类。这种抽象类只包含了抽象方法和静态常量,没有方法的实现。

    也就是说:接口中都是抽象方法和静态常量的集合。

  • 从功能的角度:接口表示一种约定,或者能力。

2.3 Java中的接口的语法格式

//1.定义一个类
关键字:class 类名{}
//2.定义一个接口,语法
interface 接口名{
    //1.静态常量
    //2.抽象方法
}
//3.【等待子类继承(extends),并实现所有的抽象方法,才能创建子类对象。】
实现类,实现一个接口的语法:
class 实现类 implements 接口名{
    
}
一个实现类,去实现一个接口?就是这个实现类中,实现接口中的所有的方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6zdfDwg7-1586375656252)(img\3接口和实现类.png)]

2.4 接口的特点

  • 接口不能创建对象,不能被实例化。而且接口中没有构造方法。
  • 接口中的方法,一般都是公共的抽象方法:public abstract来修饰
  • 接口中的属性,都是公共的静态常量:public static final来修饰

在一个接口中,声明方法的时候,如果没有声明访问权限,默认也是public的。如果没有其他的修饰符默认也是abstract。声明属性,如果没有声明访问权限和其他的关键字,默认也是public static final。

public interface 接口名{
	public static final 数据类型 常量名 = "初始值";
	public abstract void test();
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXasvWHY-1586375656253)(img\4USB.png)]

2.5 使用接口的好处

  • 降低代码之间的耦合性:(藕断丝连),类和类之间,耦合性越低越好。

  • 定义的都是规则,对外保持接口的一致。

  • 接口可以多继承

2.6 注意点

1、接口可以多继承

一个接口允许继承另外一个接口,而且允许继承多个接口。只不过该接口的实现类,要实现该接口中,以及从父接口中继承来的抽象方法,都需要实现。

接口中:声明都是抽象方法。只有声明(描述功能),没有具体的实现(完成这个功能)。声明和实现分离。

2、一个类还可以实现多个接口

一个实现类,可以同时实现多个接口。

3、一个实现类如果没有实现接口中的所有的方法,那么该类是抽象的。等待子类继承,并实现其他的抽象方法。

4、一个类也可以继承父类,同时实现接口。

5、jdk1.8的新特性:default方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TNU2DojZ-1586375656253)(img\5接口的注意点.png)]

三、总结

static:修饰属性,和方法。【重点掌握】

​ 修饰代码块。【了解】

接口:

​ 语法:抽象方法和静态常量的集合。JDK1.8版本新增了功能:允许default方法。

​ 概念:规定了一系列的规则和功能。

语法:

interface 接口名{
	//静态常量
	//抽象方法
}

实现类来实现接口。
class 实现类 implements 接口名{
    //实现类中实现接口中的抽象方法。
}

创建实现类对象,访问这些方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值