1.抽象类和接口有什么区别?
概念
接口是对行为的抽象,是抽象方法的集合,利用接口可以实现定义与实现分离。
抽象类是不能实例化的类,用abstract关键字修饰class,主要目的是实现代码重用
区别
接口所有属性都是隐含**‘static final’修饰的常量**。
抽象类可以有常量和变量。
抽象类可以有抽象方法,也可以没有抽象方法。
接口可以多实现,抽象类只能单继承。
接口interface使用implements关键字实现,抽象类abstract class通过extends关键字实现。
有抽象方法的类一定是抽象类,但是抽象类里面不一定有抽象方法。
接口里面所有的方法的默认修饰符为public abstract,接口里的成员变量默认的修饰符为 pulbic static final。
接口和抽象类如何选择?分别在什么情况下使用?
当仅仅只需要定义抽象方法而不需要公共变量和具体方法复用时选择接口。
当需要公共的变量和具体代码复用时,选择抽象类
JDK8为什么在接口中出现default类型的方法?
使用接口,就可以实现面向接口编程,但是当接口内添加新方法时,就需要在所有的实现类中进行实现。为了给存在的接口新增方法而不影响已有的实现。所以引入了接口中的默认方法的实现。
原文链接:https://blog.csdn.net/qq_41170102/article/details/104478268
2.静态变量和常量(final)
静态成员都存放在“静态区”,具有全局作用范围,内存中静态区在程序运行结束之后才会释放。
静态变量和非静态变量的区别是:
静态变量被所有的对象所共享,在内存中只有一个副本,
它当且仅当在类初次加载时会被初始化。
而非静态变量是对象所拥有的,在创建对象的时候被初始化,
存在多个副本,各个对象拥有的副本互不影响。
final: 不可改变。可以用于修饰类、方法和变量。
- 类:被修饰的类,不能被继承。
- 方法:被修饰的方法,不能被重写。
- 变量:被修饰的变量,不能被重新赋值。
3.Java switch case 语句
1.switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量(固定值)。
2.当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句(default前没有break的话default也要执行)。
3.switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。
char grade = 'C';
switch(grade)
{
case 'A' :
System.out.println("优秀");
break;
case 'B' :
case 'C' :
System.out.println("良好");
break;
case 'D' :
System.out.println("及格");
break;
case 'F' :
System.out.println("你需要再努力努力");
break;
default :
System.out.println("未知等级");
}
System.out.println("你的等级是 " + grade);
}
/*
以上代码编译运行结果如下:
良好
你的等级是 C
*/