Java基础3

1、抽象类和接口有什么异同
抽象类和接口都不能被实例化,但可以定义抽象类和接口的引用
一个类如果继承了某个抽象类或者实现了某个接口,则都需要对其中的抽象方法全部进行实现,否则该类任然需要被声明为抽象类
接口比抽象类更加抽象,抽象类中可以定义构造器,可以有很多抽象方法和具体方法,但是接口不能定义构造器,而且其中的方法都是抽象方法
抽象类的成员可以是public,默认,protected,private,而接口中的成员全都是public
抽象类可以定义成员变量,而接口中定义的成员变量实际都是常量,用static final修饰
有抽象方法的类必须声明为抽象类,而抽象类不一定有抽象方法
2、成员变量和局部变量
a.定义的位置不一样【重点】
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类当中
b. 作用范围不一样【重点】
局部变量:只有方法当中才可以使用,出了方法就不能再用
成员变量:整个类全都可以通用。
c.默认值不一样【重点】
局部变量:没有默认值,如果要想使用,必须手动进行赋值
成员变量:如果没有赋值,会有默认值,规则和数组一样
d. 内存的位置不一样(了解)
局部变量:位于栈内存
成员变量:位于堆内存
e.生命周期不一样(了解)
局部变量:随着方法进栈而诞生,随着方法出栈而消失
成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失
3、抽象方法是否可同时是静态的、同时是本地方法,同时被synchronized修饰
抽象方法需要被子类重写,而静态的方法不能被重写,所以矛盾
本地方法是由本地代码实现的方法,而抽象方法是没有实现的,矛盾
synchronized和方法的实现细节有关,但是抽象方法不涉及实现细节,矛盾
4、静态变量和实例变量的区别
静态变量是被static修饰的变量,称为类变量,属于类,不属于类的任何一个对象,一个类不管创建了多少个对象,静态变量在内存有且仅有一个拷贝
实例变量需要依存某一实例,需要先创建对象然后通过对象才能访问它。
静态变量可以实现让多个对象共享内存
5、是否可以从一个静态方法内部发初对非静态方法的调用
不可以,静态方法只能访问静态成员,因为非静态方法的调用要先创建对象,在调用静态方法是可能对象都没有被初始化。但是非静态方法既可以访问静态成员又可以访问非静态成员

posted @ 2020-11-02 10:54  走过路过哭过  阅读(68)  评论(0)    收藏  举报