文章目录
- 1. java访问修饰符
- 2. 抽象类和接口
- 2.1 抽象类
- 2.2 接口
- 2.3 抽象类和接口的区别
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。
整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏
1. java访问修饰符
2. 抽象类和接口
2.1 抽象类
1.public abstract class Animal {
2. private int weight = 0;
3.
4. public void setWeight(int weight) {
5. this.weight = weight;
6. }
7.
8. public int getWeight() {
9. return weight;
10. }
11.
12. static {
13. System.out.println("static初始化块");
14. }
15.
16. {
17. System.out.println("初始化块");
18. }
19.
20. public Animal(){
21. System.out.println("Animal的午参构造器");
22. }
23.
24. public Animal(int weight) {
25. this.weight = weight;
26. System.out.println("Animal 的有参构造器");
27. }
28.
29. public void sleep(){
30. System.out.println("休息一下");
31. }
32. public static void StaticMethod(){
33. System.out.println(“静态方法”);
34. }
35. public abstract void running();
36.
37. public abstract String say(String str);
38.
39. //那就是虽然外部抽象类不能用Static修饰,但内部的抽象类却可以使用static声明
40. static abstract class B{
41. public abstract void sanMethod();
42. }
43.}
特点:
1)抽象类和抽象方法都必须用abstract来修饰,抽象方法不能有实体;
2)抽象类有构造器,但不能被实例化,只能当成父类来被继承;
3)抽象类可以包含成员变量、抽象方法以及普通方法、构造器、初始化块、内部类5大块;
4)抽象类的不一定包含抽象方法,但是抽象方法的类必定是抽象类;
5)final不能修饰抽象类和抽象方法,因为要被继承;
6)private不能修饰抽象类和抽象方法,因为需要被子类继承和重写;
7)Static不能修饰抽象方法,因为静态类可以通过方法名直接调用,但抽象方法没有方法体,所以使用static修饰没有意义;虽然外部抽象类不能用Static修饰,但内部的抽象类却可以使用static声明,如:
1.//定义一个抽象类A
2.abstract class A{
3. //定义一个内部抽象类B
4. static abstract class B{ //static定义的内部类属于外部类
5. public abstract void saoMethod();
6. }
7.}
8.
9.class C extends A.B{
10.
11. public void saoMethod(){
12. System.out.println("======saoMethod方法执行了======");
13. }
14.}
15.public class StaticDemo {
16.
17. public static void main(String[] args) {
18. A.B ab = new C();//向上转型
19. ab.saoMethod();
20. }
21.
22.}
当使用static声明的内部抽象类相当于一个外部抽象类,继承的时候使用“外部类.内部类”的形式表示类名称。这种骚操作属实是稳中带皮。
2.2 接口
接口中的所有方法都是抽象的,接口的方法默认为public abstract类型,接口中的成员变量类型默认为public static final。
1.public interface InferfaceTest extends FatherInterface{
2. int a = 0; // 成员变量类型默认为public static final
3. void eat(); // 接口中的方法定义默认为public abstract类型
4. void travel(); // 接口中的方法定义默认为public abstract类型
5.}
2.3 抽象类和接口的区别
本节完!