知识点总结

本文介绍了Java中的代码块,包括局部、构造和静态代码块及其执行顺序。详细阐述了继承的概念,强调了单继承和多层继承的特点,并讨论了static、final关键字的作用。此外,还讲解了多态的前提条件、成员访问规则以及this和super的区别。最后提到了抽象类、接口和内部类的相关知识。
摘要由CSDN通过智能技术生成

1:什么是java中的代码块?

Java中的代码块是{}包裹起来的内容

分类:

1)局部代码块:方法定义中 作用:限定局部变量的生命周期

  1. 构造代码块:类的成员位置定义的{}

作用:在执行构造方法之前,如果存在构造代码块,先执行构造代码块,然后在执行构造方法,就是给数据进行初始化

优先级:

静态代码块----->构造代码块----->构造方法

2:继承的概念

将多个类的共性内容抽取到一个独立的类中,这个独立的的类和这多个类产生的关系叫继承

继承的好处:

  1. 可以提高代码的复用性

  1. 可以增强代码的后期维护

  1. 类鱼类的关系:继承关系是多态的前提条件

继承的特点

在类与类之中,只支持单继承不支持多继承,但是可以多层继承

注意事项:

1:子类继承父类,可以继承父类所有东西,但是父类的私有属性和方法只能在本类中访问

2:可以通过super来访问父类的构造方法

3:子类继承父类,如果子类的成员变量名称和父类的成员变量名称一致,如何访问呢?

a)先在子类的局部位置(子类的成员方法中定义变量:局部变量)找,如果存在,就使用

b)如果子类的局部位置没有,然后才在子类的成员位置找,如果存在,就使用

c)如果子类的成员位置没有,然后在父类的成员位置找,如果存在,就使用

d)如果父类的成员位置也没有,说明当前没有这个变量,就访问报错!

一句话:就近原则!

4:static关键字

1:被static修饰的成员随着类的加载而加载,优先于对象存在

2:static不能和this共存

注意事项:

1:非静态的成员方法里面可以访问静态的变量和方法,也可以访问非静态的变量和方法

2:静态只能访问静态

5:final关键字特点

1:修饰符 改类不能被继承

2:修饰成员方法 该成员方法不能重写

3:修饰变量,此时该变量是一个常量,不能在重新赋值

6:面试题:

1)final修饰基本数据类型和修饰引用数据类型 的区别?

2)final修饰的引用数据类型,当前不能在开辟堆内存(不能重新new),里面的成员变量依然可以进行赋值

3)final修饰的基本数据类型,基本数据数据值不能在改变!

7:this和super概念区别

this:代表是当前类对象的地址值引用

super:代表父类的对象的地址值引用(父类的空间标识)

成员访问的区别:

this.变量名; 访问本类的成员变量

super.变量名; 访问父类的成员变量

this.方法名() ; 访问本类成员方法

super.方法名() ;访问的父类的成员方法

this() ; 访问本类的无参构造方法

this(xxx); 访问的本类的有参构造方法

super() ;访问的是父类的无参构造方法

super(xxx) ; 访问的是父类的有参构造方法

8:final,finalize,finally的区别?

final是一个状态修饰符.最终的,无法更改的!修饰类,该类不能被继承饰成员方法,该方法不能被重写修饰变量,此时变量是一个常量;

finalize:是一个方法名,是后面jvm当前确定堆内存中对象没有更多引用的时候,来通过垃圾器来调用进行回收的方法!

finally:是关键字,是后面Java中去处理"异常"的一种格式

9:什么是多态

一个事物体现出的不同形态

前提条件:

1:必须存在继承关系,才能使用多态

2:必须存在方法重写,子类继承父类,部分功能将父类进行重写

3:必须存在父类引用指向子类对象

10:多态的成员访问特点:

1)成员变量:编译看左,运行看左!

2) 成员方法(默认都是非静态): 如果子类重写了父类的方法,编译看左,运行看右!

3) 静态方法算不上重写,和静态的都是类成员! (访问方式都是类名来调用的)

构造方法:继承是多态的前提条件,所以在使用父类引用指向子类对象:Fu fu = new Zi() ;

11:多态的好处

可以提高代码的复用性还可以提高代码的扩展性

12:override和overload的区别

方法重载:

在定义方法的时候,为了提高功能的扩展性,同一个方法名,可以使用不同的参数进行传递!

方法名相同,参数列表不同,与返回值无关!

参数列表不同:参数个数和参数类型和类型的先后顺序

方法重写:

是在继承关系中使用的;

子类继承父类,子类的功能想沿用父类的功能,同时使用自己的功能,子类出现了和父类一模一样的方法,--方法重写(覆盖/复写)

子类继承父类,如果要重写父类的功能,访问权限不能够更低,最起码跟父类的成员方法一致,要么永远public!

13:什么是抽象类以及抽象类的特点

抽象类:

将一个事物的概括性功能,不给出具体的体现,让具体子类进行重写,需要将这个功能---抽象功能 abstract,此时必须抽象类;

特点:

1)抽象类不能实例化

2)通过抽象类的子类(具体的子类)进行实例化 :抽象类名 对象名 = new 子类名() ; 抽象类多态

抽象类的子类如果是抽象类,没有意义,一定要存在具体类,否则都无法创建对象!

14:抽象abstract关键字不能和哪些关键字共存?

private static final

15:什么是接口 以及接口和抽象类的区别

接口:

体现事物的一种额外扩展功能,事物本身具备,这个事物只要实现了接口,就具备接口暴露的功能!

接口和抽象类的区别:

1)成员的区别:

抽象类:

成员变量:可以为变量,也可以为自定义常量

构造方法:有参/无参构造方法都存在,目的为了给类的成员进行初始化,分层初始化

成员方法:即可以有抽象方法,也可以有非抽象方法

接口:

成员变量:只能是常量,存在默认的隐藏的修饰符 public final static

构造方法:没有

成员方法:只能是抽象方法

2)关系的区别:

类与类:继承关系,extends-->只支持单继承,不支持多继承,可以多层继承

类与接口:实现关系,implements-->一个类继承另一个类的同时,可以实现多个接口,接口名和接口名逗号隔开

接口与接口:继承关系,extends-->支持单继承,多继承,多层继承!

3)设计理念

抽象类:继承关系,体现核心思想"is a" 的关系,类A是类B的一种或者类B是类A的一种

接口:子实现类和接口实现关系----体现核心思想 "like a"的关系,是事物的额外的扩展功能!

16:形式参数问题

方法形式参数:

具体类:调用该方法,此时实际参数需要的是当当前类的对象!

抽象类:调用该方法,此时实际参数需要的是当前抽象类的子类对象!

接口类型:调用该方法,此时实际参数需要的是接口的子实现类对象!

开发中:方法形式参数是具体类以及接口情况居多的!

17:返回值问题

方法的返回值如果是引用类型:

具体类:需要返回该具体类的对象!

抽象类:需要返回该抽象类的子类对象!

接口:需要返回接口子实现类对象!

18:什么是内部类

在Java中,在一个类中定义另一个类,在类A中,定义一个类B,将类B成为类A的内部类,类A是类B的外部类

19:成员内部类:

在外部类中,在外部类的成员方法外

特点:

可以访问外部类的成员包括私有!

直接去访问外部类的中的成员内部类的成员方法:特有方式 (成员内部类没有private以及static修饰!)

20;局部内部类:

在外部类的成员方法中定义的类

特点:

局部内部类也是可以直接访问外部类的成员变量,包括私有!

21:面试题:

局部内部类里面的成员在访问局部变量的时候,局部变量有什么要求?

JDK8以前的版本,局部内部类在访问外部类的成员方法中的局部变量的时候,此时局部变量必须加入final修饰!

原因:

局部变量的生命周期随着方法调用而存在,随着方法调用结束而消失;

外部类的成员方法调用完毕,此时这个局部变量应该释放了,但是当前这个成员方法中创建局部内部类对象

使用局部内部类对象访问它里面的成员方法,成员方法还在使用这个局部变量,所以此时这个变量为常量,显示的加入final修饰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值