java面试_面向对象

1.this
This使用的几个场景
1.指向对象成员变量
2.指向本类的方法或构造方法
3.static方法在本类中直接通过方法名调用,不用加this
4.static方法里不能使用this
结论:this指向的是对象不是类
2.继承实例化的过程
1.当存在继承时加载的顺序
代码:
public class TestExtend {
public static void main(String[] args) {
B b = new B();
System.out.println("");
B b2 = new B();
}
}
class A {
static {
System.out.println("a static");
}
{
System.out.println("a {}");
}

public A() {
    System.out.println("a 构造");
}

}
class B extends A{
static{
System.out.println("b static");
}
{
System.out.println("b {}");
}
public B(){
System.out.println("b 构造");
}
}
执行结果:
a static
b static
a {}
a 构造
b {}
b 构造

a {}
a 构造
b {}
b 构造
结论:
1.继承时加载顺序:先加载父类静态成员,再加载子类静态成员
加载父类成员变量,再加载父类构造方法
加载子类成员变量,再按加载子类构造方法
2.static变量属于类不属于对象,所以只有类装载进内存时才会调用,而不是实例化对象时
3.几个方法
Equals 基本数据类型的封装类重写
Hashcode 获得hash码,int类型就是本身,其他方法java中都有写可以看源码,eclipse上有快捷生成的方法,对象类型是各个变量相乘
4.方法的重载和重写
重载:发生在同一个类下
条件:参数类型不同,方法名相同,别的没要求,就像构造方法的参数一样
重写:发生在继承情况下
条件:重写是多态的实现,所以方法名,参数,返回值类型必须和父类方法相同,但是返回值类型因为强制类型转换,所以可以小于父类方法的返回值类型。
异常必须小于等于父类方法,访问权限必须大于等于父类方法

继承时构造方法:父类无构造方法时,子类默认继承了父类的无参构造
父类有有参构造方法时,子类必须重写这个有参方法,因为方法重写参数必须一致,并且要通过super关键字重写
5.接口和抽象类
接口:1.接口用interface关键字定义,用implement关键字继承
2.接口中的变量必须为final类型的
3.接口可以继承多个接口,但是不能出现方法的实现
4.接口中的访问权限只能是public 或者不写
抽象类:1.abstract关键字定义,abstract关键字只能修饰方法和类
2.抽象类中可以定义非抽象方法
3.抽象方法不能用private关键字修饰,因为抽象方法就是用来继承重写的
4.一个类继承了父类那么必须实现父类的抽象方法,除非这个类也是抽象的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值