2021-06-18
Posted m0_56896288
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-06-18相关的知识,希望对你有一定的参考价值。
第4章:抽象类与接口
4.2 final关键字的作用
知识要点
- final关键字的使用:final用中文表示是最终的意思,final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量叫常量,且以后不能在其他地方改变值。
- final修饰变量:final修饰的变量必须赋值,且其他地方不允许再修改值,一般用于统一固定某个数据。
3.final常量的赋值:final的全局属性虽然可以在其他地方赋值,但是常用的都是声明的直接赋值。
4.注意事项
在企业中经常会把一些统一的值,使用常量的方式进行封装,以避免各个开发人员出现不一致的情况。
5.常量的命名规范
一个属性一旦被修饰为常量,则常量名一般都为大写字母。
6.final关键字的使用大家要注意:抽象类就是用来被继承然后实现抽象方法的,抽象类不能用final来修饰,否则就相互矛盾。
4.3 接口的创建
- 注意事项
Java中只支持单继承,一个类只能继承另外一个父类。- 接口是什么
接口就是定义的一组未实现的方法,强制要求实现的子类必须完成这些方法,从而提高应用的灵活扩展性。
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 接口的实例理解
- 注意事项
这里的错误是因为,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);
}
}
以上是关于2021-06-18的主要内容,如果未能解决你的问题,请参考以下文章