1.static 修饰的属性,相较于实例变量,有哪些特别之处(>=3点)
随着类的加载而加载;早于对象的创建,只要权限通过,可以通过;对象static.属性的方式进行调用;存在于方法区的静态域。
被类的所有对象共享,这也是我们判断是否使用静态关键字的条件.
可以通过类名调用,也可以通过对象名调用。
2. static访问特点:
static的访问特点
非静态的成员方法
能访问静态的成员变量
能访问非静态的成员变量
能访问静态的成员方法
能访问非静态的成员方法
静态的成员方法
能访问静态的成员变量
能访问静态的成员方法
总结成一句话就是:
静态成员方法只能访问静态成员
3.final 可以用来修饰哪些结构,分别表示什么意思?
final修饰类:该类不能被继承(不能有子类,但是可以有父类)
final修饰方法:该方法不能被重写
final修饰变量:表明该变量是一个常量,不能再次赋值
4.类的属性赋值的位置有哪些?先后顺序为何?
默认初始化<显示初始化 / 在代码块中赋值<显示初始化 <在代码块中赋值<通过 对象.属性 或 对象.方法 的方式进行赋值
5.abstract 能修饰哪些结构? 修饰以后,有什么特点?
1).abstract 可以修饰类:
(1)被abstract修饰的类称为抽象类:abstract class 类名{}
(2)抽象类编译之后会生成独立的.class文件
(3)抽象类不能单独创建对象(既不能new对象),但可以声明抽象类类型的引用 例如 Animal a
(4)抽象中可以定义成员变量和成员方法
2).abstract可以修饰方法:
(1)被abstract修饰的方法称为抽象方法
(2)抽象方法只有声明部分,没有方法实现部分(连{}都没有),以分号结尾
语法:访问修饰符 abstract 返回值类型 方法名(形参列表);
注意:访问修饰符和abstract没有先后位置
(3)抽象方法只有定义在抽象类中;但是抽象类中既可以定义抽象方法,也可以定义非抽象方法
3).abstract抽象子类:
(1)如果一个类继承抽象类,此类为抽象类的子类
(2)如果子类不想定义为抽象类,必须覆盖父类中所有的抽象类方法,否则子类必须定义抽象类
(3)抽象类类名 引用名=new 子类类名(形参);
4).abstract抽象类强制使用多态。
6.接口是否能继承接口? 抽象类是否能实现(implements)接口? 抽象类是否能继承非抽象的类?
所以接口可以继承接口。抽象类可以实现(implements)接口。抽象类可以继承非抽象的类。
注:抽象类中可以右main方法。
7.抽象类和接口有哪些共同点和区别?
共同点:
1.可以定义抽象方法
2.不能创建本类对象,只能由子类去实例化子类对象
区别:
1.子类要扩展它们时,对抽象类用的是extends关键字,对接口用的是implements关键字
2.抽象类可以去实现接口,接口只能继承接口,不能继承类
3.一个类可以实现多个接口,但只能继承一个抽象类
4.抽象类可以有构造方法,接口中不能有