* A:案例演示
*
看程序写结果1
class Fu{
public int num = 10;
public Fu(){
System.out.println("fu"); //2
}
}
class Zi extends Fu{
public int num = 20;
public Zi(){
System.out.println("zi"); //3
}
public void show(){
int num = 30;
System.out.println(num); //30 4
System.out.println(this.num); //20 5
System.out.println(super.num); //10 6
}
}
class Test1_Extends {
public static void main(String[] args) {
Zi z = new Zi(); // 1
z.show();
}
}
看程序写结果2
class Fu {
static {
System.out.println("静态代码块Fu");
}
{
System.out.println("构造代码块Fu");
}
public Fu() {
System.out.println("构造方法Fu");
}
}
class Zi extends Fu {
static {
System.out.println("静态代码块Zi");
}
{
System.out.println("构造代码块Zi");
}
public Zi() {
System.out.println("构造方法Zi");
}
}
Zi z = new Zi(); 请执行结果。
---------------------------------------------------------------------------------------------------------------------------------------------
##面试题5
08.15_面向对象(方法重写的面试题)(掌握)
* A:方法重写的面试题
* Override和Overload的区别?Overload能改变返回值类型吗?
* overload可以改变返回值类型,只看参数列表
* 方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
* 方法重载:本类中出现的方法名一样,参数列表不同的
方法。与返回值类型无关。
* 子类对象调用方法的时候:
* 先找子类本身,再找父类。
-------------------------------------------------------------------------------------------------
##面试题6
12:final关键字的面试题?
A:修饰局部变量
基本类型,是值不能被改变
* 引用类型,是地址值不能被改变,对象中的属性可以改变
B:初始化时机
* A:final修饰变量的初始化时机
* 显示初始化
* 在对象构造完毕前即可
-------------------------------------------------------------------------------------------------
##面试题7
09.15_面向对象(抽象类中的面试题)
* A:面试题1
* 一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
* 可以
* 这么做目的只有一个,就是不让其他类创建本类对象,交给子类完成
* B:面试题2
* abstract不能和哪些关键字共存
static abstract 修饰的没有方法体 被static修饰的类名.可以调用抽象方法是没有什么意义的
final final是最终的 不让重写 abstract是强制子类重写
privat privat 是私有不让访问 abstract 是让子类强制重写
-------------------------------------------------------------------------------------------
##面试题8
###11.20_常见对象(==号和equals方法的区别)(掌握)
* ==是一个比较运算符号,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值
* equals方法是一个方法,只能比较引用数据类型,所有的对象都会继承Object类中的方法,如果没有重写Object类中的equals方法,equals方法和==号比较引用数据类型无区别,重写后的equals方法比较的是对象中的属性
|
|