java入门4.4

今日所学:

掌握final关键词和接口interface

一、final关键词

1>final 可以修饰类、方法还有变量

final 修饰类的话,不能被继承

final修饰方法的话,不能被重写

final修饰变量的话,该变量理解为常量,因此必须赋初值

2>interface 接口

1.声明 [修饰符] interface 接口名称[父类接口列表]{

方法:[public] [abstract] 返回类型 函数名称(参数列表);

变量:[public][static][final] 数据类型 变量名称=初始值;

注:接口中所有方法都是抽象的、公有的

接口中所有成员变量默认都是公有的、静态的、终值的变量

}

2. 接口可以被继承 一个类只能继承一个类 但是可以继承(实现)多个接口

格式: [修饰符] class 类名<泛型> extends 父类 implements [接口列表]

1>实现接口的类 不可以降低方法的可见性

2>实现接口的类 必须重写接口中所有的方法

3.使用接口的原因: 1)实现方法声明和方法实现相分离 2) 使多个类表现出相同的行为 3)由于一个类可以实现多个接口,因此可以实现多重继承

接口使用条件:解耦 不同的场景

例:老板要开会,校长也能开会 他们都是人 但不能把他们归到人这个属性 因为不是所有的人都能开会。 此时,场合不同但是具有相同的行为 这个时候我们就要抽象出一个开会的行为 用的时候只需定义 函数 dosomething(开会的接口 对象)

4.接口和抽象类一样  不能直接创建对象   但是可将一个接口的引用指向一个实现了该接口的类的实例

5.接口可以定义类的内部成员  

6.接口和抽象类的相同点和不同点

相同点:1)抽象类和接口都包含抽象方法   2)接口和抽象类都不可被实例化  但都可以将其引用指向实现了该接口(或抽象类)的类的实例

不同点:1)抽象类可以有非抽象方法  接口中方法默认都是抽象的   2)接口约定了多个互不相关的类的共同行为    抽象类约定了多个子类之间共同使用的方法   3)抽象类和子类是单重继承  一个类可以实现多个接口,多个接口之间用逗号隔开  4)实现接口意味着能够“做什么”         继承抽象类意味着“是什么”

7.抽象类和接口如何选择:

1)如果不需要定义成员变量和方法  优先使用接口       主要考虑 : 你是要“做什么”还是“是什么”

2)变更已存在的功能时用继承     增加功能时用接口

3)几个人写一个模块时,接口更有利于并行开发和单元测试

在图形界面的时候  会大量用到接口和抽象类  Java API 是应用程序接口集合

以下代码中为上面知识点的测试,并带有注释

interface  interA{
	int a=0; //The blank final field a may not have been initialized
	public   abstract   void f();//{//Abstract methods do not specify a body
		   //}
	void f1();
}


class Aclass implements interA{//定义了一个实现接口interA的类
	//- The type Aclass must implement the inherited abstract method 
	public  void f1(){//不要忘记  public  接口中所有方法默认访问权限都是public
		 System.out.println("实现了接口中的方法 f1()");
	 }
	public void f(){
		
	}
}
public class TestInterface {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
//    接口不能直接实例化,但是可以将一个实现了接口的类 赋值给接口对象
		Computer c= new Computer();
		c.plugin(new Phone());
		c.plugin(new Vivo());
	}

}
//定义了一个USB接口  实现了接口的类 分别是phone  vivo 这样两个设备都可以在电脑上使用  
//我们将接口的规范称为标准  制定标准   由实现接口的类具体实现标准的方法   由标准使用者 (电脑)具体使用
interface USB{//标准制定  抽象的定义一个实现该标准的类  应该具备什么功能或行为
	public void install();
	public void work();
}

class Computer{//标准使用
	public void plugin(USB usb){//标准使用者只需要传过来一个实现标准的类的对象即可,不关心该对象内部是如何具体工作的
		usb.install();
		usb.work();
	}
}
class Phone implements USB{//标准实现
	public void  install(){
		 System.out.println("安装phone驱动程序");
	}
	public void work(){
		 System.out.println("phone手机与电脑进行工作");
	}
}
class Vivo implements USB{//标准实现
	public void  install(){
		 System.out.println("安装vivo手机驱动程序");
	}
	public void work(){
		 System.out.println("vivo手机与电脑进行工作");
	}
}
   class A{
	   final void f(){
		   
	   }
	   //  final int a;    //The blank final field a may not have been initialized
	
}
class B extends A{
	//void f(){
		//Cannot override the final method from A  不能被重写
		
	//}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值