Java SE学习笔记(三)——抽象类 接口 Static关键字_抽象类static

最后

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

大厂面试题

面试题目录

A、接口:接口的地位等同于class,接口中的所有方法都是抽象方法,不能包含具体实现的方法;

B、在接口中,因为全部是抽象方法,因此abstract一般省略;eg: public interface InterfaceTest{ public void outpu();}

C、抽象类可以有具体方法和抽象的方法,接口可以看做一种特殊的抽象类,即全部是抽象方法的抽象类。

D、类可以实现接口,利用implements实现;如果一个类实现了某个接口,那么该类需要实现接口中声明的所有方法,否则这个类必须声明为抽象类。

F、Java是但继承的,一个类只能有一个父类;但是一个类可以实现多个接口,通过“逗号”隔开即可;一个类可以既继承类又同时实现接口,eg: public class MyClass extends MyParent implenments MyInterface,MyInterfacee{ //类的具体内容} ;

G、多态的另一种形式:虽然接口自身不能实例化,但是接口可以被他的实现类实例化 Interface1 a=new InterfaceTest(); //Interface1为接口,InterfaceTest为实现了Interface1的实例。所谓多态:指的是父类的引用类型可以指向子类型的对象,或者接口的引用类型可以指向实现了该接口的类的实例。二者强制类型转换规则一致。

3、static关键字

A、static可以修饰属性、方法、类;当static修饰成员变量(属性)时,类的所有实例共用唯一的一个静态属性,即任意一个实例改变静态属性,其他实例的属性也会随之改变。同时可以通过“类名.成员变量名”的方式类访问,java也推荐这种方式。

B、static修饰静态方法,同样可以通过类名直接调用静态方法。静态方法继承的区别 M m=new N();//M继承于N,且M和N有一个共同的静态方法,此时会输出M的方法

子类可以继承父类的静态方法,子类不能重写父类的静态方法,子类可以隐藏父类的静态方法;

注意:此时如果是静态方法,对象是谁就调用谁的方法,下文代码中的对象是M,所以输出M。如果调用方法不是静态方法,实例指向谁就调用谁的方法,下文代码中output如果不是静态犯法,就应该输出是N

class StaticTest{
    public static void main(String [] args){
        M m=new N();
        m.output();//输出M,与非静态方法输出结构不一样;
    }
}
class M{
    public static void output(){
        System.out.println("M");
    }
}
class N extends M{
    //Override  //这里会报错,父类静态方法不能被重写
    public static void output(){
        System.out.println("N");
    }
}

4、final关键字,final可以修饰属性、方法、类。

A、1) final修饰类表示该类是一个终态类,不能被继承;

2)final修饰一个方法时,表示一个方法时终态的方法,该方法不能被重写(override);

3)final修饰一个属性时,表示该属性不能被改写。

4)final修饰一个原生类型时,表示该原生数据类型的值不能发生变化(比如说不能从10变为20);如果final修饰一个引用类型时,表示该引用类型不能再指向其他对象,但是该引用指向的对象的内容是可以发生变化的。

B、final陷进(容易犯的错误):final类型的成员变量,一般来说有两种赋予初值的方式:

1)在声明final类型成员变量时就赋予初值

2)在声明final类的成员变量不赋予初值,但是必须在类的构造函数中赋予初值,否则编译通不过。

public class FinalTest{
    final int a;
    public FinalTest(){        
        a=0;  //定义第一个构造函数必须赋值,否则编译通不过;
    }
    public FinalTest(int a){
        this.a=a;  //定义了第二个构造函数,必须赋值,否则编译通不过
    }  
}

5、static关键字修饰,静态代码块

A、静态代码块的作用,完成成一些初始化的工作;首先执行静态代码块,再执行构造方法。

B、静态代码块会在class文件加载到JVM中的时候执行,而构造方法会在new的时候才生成;因此先输出“static block”,后续new对象的时候才输出“P constructor”;因静态代码块只会加载到JVM中一次,所以只执行一次。

public class StaticTest{
    public static void main(String [] agrs){
        P p=new P();
        P p2=new P();
    }
}

class P{
    static{    
        System.out.println("static block");//先输出,且输出一次
    }
    public P(){    
         System.out.println("P constuctor"); //后输出,且输出2次 
    }
#### 最后

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
就答题情况而言,第一问100%都可以回答正确,第二问大概只有50%正确率,第三问能回答正确的就不多了,第四问再正确就非常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。

常非常少了。其实此题并没有太多刁钻匪夷所思的用法,都是一些可能会遇到的场景,而大多数人但凡有1年到2年的工作经验都应该完全正确才对。
只能说有一些人太急躁太轻视了,希望大家通过此文了解js一些特性。

并祝愿大家在新的一年找工作面试中胆大心细,发挥出最好的水平,找到一份理想的工作。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值