1:代码块是什么?代码块的分类和各自特点?
定义在一对大括号之间的代码. 分为局部代码块静态代码块同步代码块 构造代码块
局部代码块:定义在方法中,限定变量的声明周期,及早释放变量节省空间
构造代码块:定义在类中方法外,将多个构造方法中相同的代码提取出来存放到一起,每次调用构造方法都执行并且在构造代码块前执行
静态代码块:用static修饰的代码块,用于对类进行初始化,类加载的时候就执行,并且就执行一次(类加载几次就执行几次)
2:静态代码块,构造代码块,构造方法的执行流程?
先执行父类的静态代码块子类的静态代码块然后是父类的构造代码块父类的构造方法子类的构造代码块然后是子类的构造方法
3:继承概述
继承就是类与类之间子父类的关系
4:继承的好处
继承的好处:提高代码的复用性,提高代码的维护性,建立了类与类之间的关系是多态的前提弊端是增强了耦合性
5:Java中继承的特点
java中类之间的继承只支持单继承不支持多继承,但支持多层继承
6:Java中继承的注意事项?以及我们什么时候使用继承?
子类只能继承父类中的非私有的成员包含成员变量成员函数
子类不能继承父类中的构造方法,但可以通过super()进行访问
不能为了部分功能而继承
子类与父类之间是is a的关系,可以采用假设法如果A类是类B的一种那么就可以让类A继承类B
7:继承中的成员访问特点
A:成员变量
在子类方法中访问一个变量
B:成员方法
在测试类中通过子类对象去访问一个方法
8:继承中构造方法的执行流程?假如父类没有无参构造方法,子类应该怎么办?
在子类的构造方法中,子类可以通过super(参数)来调用,或者可以在子类的无参构造中写上this(参数),
有参构造中写上this()来调用父类的有参构造方法
9:面试题:
方法重写和方法重载的区别?方法重载能改变返回值类型吗?
Overload 重载 同一个类中方法名相同参数列表不同与返回值类型无关
Override 重写 子类中与父类相同的方法,与返回值类型有关
可以
this关键字和super关键字分别代表什么?以及他们各自的使用场景和作用。
this表示本类对象的引用谁调用就代表谁,super关键字代表本类对象父类的引用
10:继承案例练习
class Demo_Person {
public static void main(String[] args) {
Student s=new Student();
s.setName("李四");
s.setAge(15);
System.out.println(s.getName()+" "+s.getAge());
}
}
class Person {
private String name;
private int age;
public Person(){}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name) {
this.name=name;
}
public String getName(){
return name;
}
public void setAge(int age) {
this.age=age;
}
public int getAge(){
return age;
}
public void eat(){
System.out.println("吃饭");
}
}
class Student extends Person {
public Student(){}
public Student(String name,int age){
super(name,age);
}
public void study(){
System.out.println("学生学习");
}
}
class Teacher extends Person {
public Teacher(){}
public Teacher(String name,int age){
super(name,age);
}
public void teach(){
System.out.println("老师讲课");
}
}
11:final关键字可以干什么?有什么特点?
final关键字是最终的意思,可以用来修饰类变量和方法
特点被final修饰的类是最终类不能被继承,final修饰的变量是常量值不能发生改变
被final修饰的方法不能被重写
12:final关键字的面试题?
A:修饰局部变量修饰基本数据类型值不能变,修饰引用数据类型是引用数据类型的地址值不能改变,对象属性可以改变
B:初始化时机:显式初始化的时候和对象初始化完毕前 |
|