十、接口、关键字

本文详细介绍了Java接口的概念,包括为何使用接口、接口元素构成(常量、静态方法和抽象方法)、接口的用法(实现与回调对象),并对比了抽象类与接口的区别。重点讲解了静态、this、super和final关键字在接口中的作用。
摘要由CSDN通过智能技术生成

一、接口

概念:

通过interface关键字修饰的java元素就是接口。

格式:

public  interface  接口名{}

interface  接口名{}    

例子:

public interface InterfaceTest {

}

interface InterfaceTest1{ //缺省修饰符

}

1) 为什么要有接口

为了克服java的单继承,接口可以多实现

例如:

收费,出租车有收费功能【1元/公里】,

           飞机有收费功能【全程1000元】

出租车与飞机不是同一类事物,但是具有相同的功能。

总结

接口实际上就是提供不同类型事物的公共内容,由接口的子类根据自身的实际情况,来实现这个接口提供的公共内容。这样子类就不需要创建这个公共内容,只需要继承来重写一下就好。

2)接口中的元素

接口中可以有常量、静态方法、抽象方法。

1、接口中变量一定是 public static final修饰的静态常量。

2、接口中的静态方法一定是public修饰的,public可以被省略。[jdk1.8]

3、接口中的抽象方法一定是public  abstract修饰的,public  abstract可以省略。

例子:

public interface InterfaceTest {
	//静态常量
	public static final String name = "我是一个接口";
	//静态方法
	public static void fn(){
		System.out.println("我是一个接口静态方法");
	}
	//抽象方法
	public abstract void methods(); 
}

3)接口的用法

1.接口不能new,如果需要访问抽象方法需要借助接口子类。

2.类可以通过implements关键字去实现一个/多个接口

3.普通的类去实现一个/多个接口,就需要将每一个接口中的抽象方法重写,否则就需要将这个普通的类改成抽象类。(同抽象方法一样)

4.抽象类去实现一个/多个接口,不需要重写接口中的抽象方法。

5.接口可以继承接口,并且可以继承父接口中的所有元素。

public interface Hockey extends Sports, Event

6.利用接口回调对象创建出接口对象。

(和抽象方法中的向上转型基本一样

7.当某一个普通的java类中的方法参数是接口类型的时候,可以传递接口回调对象,也可以是接口的子类对象。

例子(2)(3)(4)

public class InterfaceTestDemo implements InterfaceTest,InterfaceTest1{
		@Override
	public void methods1() {
		// InterfaceTest1接口中的抽象方法
		System.out.println("interfactTest1中的抽象方法的重写");
	}
	@Override
	public void methods() {
		// TODO Auto-generated method stub
		System.out.println("interfactTest中的抽象方法的重写");
	}
}

// TODO 借口1

interface InterfaceTest {
	//静态常量
	public static final String name = "我是一个接口";
	//静态方法
	public static void fn(){
		System.out.println("我是一个接口静态方法");
	}
	//抽象方法
	public abstract void methods(); 
}
// TODO 借口2

interface InterfaceTest1{
	public abstract void methods1(); 
}

4) 接口回调对象

        接口回调对象与上转型对象很相似

        接口回调对象接口的子类对象赋值给接口变量

1.接口回调对象只能访问接口的抽象方法,实际上访问子类重写以后的抽象方法

2.接口回调对象不能访问子类本身的方法,如果要访问就需要强制类型转换

格式: 

接口类名    变量 = new  子类();

子类必须是当前接口实现的子类。

抽象类与接口的区别?

特点

抽象类

接口类

声明不同

abstract

interface

可以说继承的个数

extends 1个

Implments 1个/多个

意义不一样

同类型事务的公共功能

不同类型事务的公共功能

二、关键字:static-this-super-final

1.static静态修饰符

1)被static修饰的变量是静态成员变量,可以类名访问,也可以对象进行访问。(建议类名)

2)被static修饰的方法是静态方法,可以被类名访问,也可以通过对象访问(建议类名)

3)同一个类中静态方法不能访问实例元素,this不能出现

4)被static修饰的变量和方法,会在类的创建过程中一同创建,并且的它的数据子在同一类对象中是共享。它的声明周期比实例方法,实例属性的声明周期长。

2 this 当前类对象

出现在那个类中就是表示那个类的对象

在当前类中的构造方法/实例方法中访问当前类中的变量和方法,可以省略。

在当前类中的构造方法/实例方法中访问被隐藏的成员变量时不能省略。

3.super 父类的对象

1)出现在子类的构造函数中的第一句,super() :父类无参的构造方法。Super(参数):表示有参数的构造方法。

2) 出现在子类中的实例方法是,表示访问弗雷德变量、方法。

 访问被隐藏的父类表量,super.变量,此时这个super表示父类的对象。

一般访问没有重写之前的父类方法,super.方法([参数]),此时这个super表示父类对象。

4.final 终极修饰符

1.被fianl修饰的类,不能被继承,没有子类

2.被fianl修饰的变量,就是常量,不能被重新赋值

3.被fianl修饰的方法,不能被重写。

例子:


class Finaltest extends FinalMethods{
public void mf (){
    super.finalmethods();
    }

}

 无奈源于不够强大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值