2021-06-18

第4章:抽象类与接口

4.2 final关键字的作用

知识要点

  1. final关键字的使用:final用中文表示是最终的意思,final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量叫常量,且以后不能在其他地方改变值。
  2. final修饰变量:final修饰的变量必须赋值,且其他地方不允许再修改值,一般用于统一固定某个数据。
    3.final常量的赋值:final的全局属性虽然可以在其他地方赋值,但是常用的都是声明的直接赋值。
    4.注意事项
    在企业中经常会把一些统一的值,使用常量的方式进行封装,以避免各个开发人员出现不一致的情况。
    5.常量的命名规范
    一个属性一旦被修饰为常量,则常量名一般都为大写字母。
    6.final关键字的使用大家要注意:抽象类就是用来被继承然后实现抽象方法的,抽象类不能用final来修饰,否则就相互矛盾。

4.3 接口的创建

  1. 注意事项
    Java中只支持单继承,一个类只能继承另外一个父类。
  2. 接口是什么
    接口就是定义的一组未实现的方法,强制要求实现的子类必须完成这些方法,从而提高应用的灵活扩展性。
    3.提高扩展性
    将接口直接作为方法的参数声明,调用方法时传递的是实现了接口的子类对象,这些子类都具有接口中的方法实现,这一点实际是多态的体现。
    4.知识要点
    接口和抽象类的区别:
    (1)接口中只能包含抽象方法,抽象类则完全可以包含普通方法。
    (2)接口中不能定义静态方法,抽象类中可以定义静态方法。
    (3)接口中只能定义静态常量,不能定义普通变量或非静态的常量,抽象类中则可以定义不同的属性,也可以定义静态的属性。
    (4)接口中不包含构造方法,抽象类中可以包含。
    (5)一个类最多只能有一个直接父类,包括抽象类,而一个类可以实现多个接口。

接口的应用

package com.prictice.test1;

public interface Function {
public static final String DEEP="30米";
public static final int INDEX=5;

public abstract void dust();
public abstract void waterproof();

}
package com.prictice.test1;

public interface ExtendsFunction extends Function{
public abstract void antiTheft();

}
package com.prictice.test1;

public interface Input {
public abstract void input();
}
package com.prictice.test1;

public class AntitheftDoor implements ExtendsFunction{

	
	public void dust() {
		System.out.println("我是防盗门采用纳米技术防尘,防尘指数:"+INDEX);
		
	}

	
	public void waterproof() {
		
		System.out.println("我是防盗门,采用高科技防水技术,防水深度:"+DEEP);
	}

	
	public void antiTheft() {
		System.out.println("我是防盗门采用密码匹配防盗技术");
		
	}

}
package com.prictice.test1;

public class Keyboard implements Function,Input{

	
	public void input() {
		System.out.println("");
		
	}

	
	public void dust() {
		System.out.println("我是键盘采用全硅胶材料实现防尘,防尘指数:"+INDEX);
		
	}


	public void waterproof() {
		System.out.println("我是键盘采用特殊的密封屏蔽技术实现防水,防水深度:"+DEEP);
		
	}

}
package com.prictice.test1;

public class MyTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        AntitheftDoor door=new AntitheftDoor();
        door.antiTheft();
        door.dust();
        door.waterproof();
        Keyboard key=new Keyboard();
        key.dust();
        key.input();
        key.waterproof();
       
        
	}

}






在这里插入图片描述

4.4 接口的实例理解

  1. 注意事项
    这里的错误是因为,Camera类实现了接口,但是未实现接口中的方法。
    2.模拟使用场景
    为了提高扩展性,模拟方法中将接口作为参数声明,则实际调用使用方法时传入的是接口的子类对象。

接口案例应用

package com.prictice.test1;

public interface IPhoto {
public abstract void takephoto();
}
package com.prictice.test1;

public class Phone implements IPhoto{

	
	public void takephoto() {
		System.out.println("手机拍照");
		
	}

}
package com.prictice.test1;

public class Camera implements IPhoto{

	
	public void takephoto() {
		System.out.println("相机拍照");
		
	}

}
package com.prictice.test1;

public class Pad implements IPhoto{

	
	public void takephoto() {
		System.out.println("平板拍照");
		
	}

}
package com.prictice.test1;

public class MyTest2 {
public static void test(IPhoto ph) {
	ph.takephoto();
}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Phone p1=new Phone();
        Camera c1=new Camera();
        Pad p2=new Pad();
        test(p1);
        test(c1);
        test(p2);
	}

}





在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十的十七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值