黑马程序员_java13_java小知识点

时间:2023-02-17 09:20:21

——- android培训java培训、期待与您交流! ———-

匿名对象两种使用情况
(1)当对对象方法仅使用进行一次调用。

(2)匿名对象可以作为实际参数进行传递。

封装

私有仅仅是封装的一种表现形式。之所以对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句。对方问的数据进行操作。提高了代码的健壮性。

构造函数

(1)构造函数与类型相同。
(2)不用定义返回值类型(不与void一样,void是一种返回值类型,代表没有具体的结果返回)。
(3)不可以写return语句。
(4)作用是给对象进行初始化。
(5)抖个构造函数的特点是以重载的形式存在的。

静态方法

(1)静态方法只能访问静态成员。
(2)静态方法不可以写this或者super
(3)主函数是典型的静态方法。
(4当功能内部没有访问到非静态数据(对象特有的数据),那么该功能可以定义成静态。

什么时候使用静态变量?
(1)当对象中出出现共享的数据时,该数据被静态修饰。
(2)对象中的特有数据要定义成非静态存在于内存中。

当我们new了一个对象,程序都做了什么?

以Person p=new Person(“zhangsan”,23);为例。
(1)因为new用到 Person.class,所以会先找到Person.class文件并加载到内存中。
(2)执行该类中的static 代码块,如果有的话,给Person.class 进行初始化。
(3)在堆内存中开辟空间,分配内存地址。
(4)在堆内存中建立对象的特有属性,并进行默认初始化。
(5)对属性进行显示的初始化。
(6)对对象进行构造代码块的初始化。
(7)对对象进行构造函数的初始化。
(8)将内存地址赋给栈内存中的p变量。

默认构造函数
默认构造函数的权限与所属的类是一致的。
如果类没有被public修饰,那么默认的构造函数也是没有public修饰,
即默认构造函数的权限是随着类的变化而变化。

抽象类

(1)抽象方法一定在抽象类中。
(2)抽象类和抽象方法一定要被关键字abstract修饰。
(3)抽象类不能用new创建对象,因为调用抽象方法没有意义。
(4)抽象方法中的抽象方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。如果子类只覆盖部分的抽象方法,那么该子类还是一个抽象类。
(5)abstract不能与之共存的关键字
final:被final修饰的类是不能有子类的,因为被abstract修饰的类必须有子类。
static :如果是static可以修饰抽象方法,那么连对象都省了。可以直接用类名调用,可是抽象方法运行就没有意义了。
private:抽象类中的私有的抽象方法,不被子类所知,就无法被复写。

子类中的构造函数

在对子类对象进行初始化时,父类的构造函数也是运行的。都是因为子类的构造函数默认第一行有一句隐式的语句super();
super()会访问父类中的空参数的构造函数。而且子类中的所有的构造函数默认第一行都是super();

为什么子类一定要访问父类中的构造函数?

因为父类中的数据子类是可以直接获取的。所以子类对象在建立时,需要先查看父类中是如何对数据进行初始化的,所以子类对象在进行初始化时,要先访问一下父类中的构造函数。如果要访问的父类构造函数中没有指定的构造函数时,一定要手动添加super语句。子类中的构造函数第一行可以是this(),但是子类中的构造函数必须至少有一个访问父类的构造函数。

final修饰符

(1)可以修饰类,函数和变量。
(2)被final修饰的类是不可以被继承的,为了避免被继承,被子类复写。
(3)被final修饰的方法不可以被复写。
(4)被final修饰的变量是一个常量,只能被赋值一次,既可以修饰成员变量,也可以修饰局部变量。当描述事物时,一些数据 的出现值是固定的,那么这是为了增强阅读性,都会给这些值起一个名字。方便阅读。而这些值不需要改变,所以加上final修饰,作为常量;常量的书规范是所有的字母都要大写,如果是由多个单词组成,单词之间有下划线连接。
(5)内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

接口
定义接口时,格式特点:
(1)接口中常见定义:常量和抽象方法
(2)接口中的成员都是固定的修饰符
常量:public static final
方法:public abstract
接口中的成员都是public类型的

接口是不能创建对象的,因为有抽象的方法,需要被子类实现,子类对接口中的所有抽象方法进行覆盖后,才能实例化。
接口是可以被多实现的,也就是对多继承不支持的转换形式。即java支持多实现。