JAVA学习笔记

Day 01 

final 关键字

如果final修饰类中的某一个属性,那么这个属性只能通过构造函数确定值,在确定值以后不能被更改

如果final修饰类的变量,那么这个类的变量只能指向一个对象,对象中的属性可以被更改,但是这个实例不能再指向其他对象

final修饰类,这个类不能被继承

final修饰方法,这个方法在继承后不能被重载

static关键字

如果类中有一个属性利用static修饰,那么这个类的所有对象共享这个属性

也即在一个对象中对这个属性更改,会影响其他的对象

static修饰类中的方法,那么这个方法也可以直接利用类名来访问

例如

math.pow(x,a)

利用静态方法可以访问类中的静态属性,但是不能利用静态方法访问非静态属性

非静态方法也可以方法静态属性

区别在于是否需要创建对象

 

 

 

static final关键字

用static final 修饰的属性,首先不可被更改,其次会被多个对象共享。

可以直接用类名来访问这个属性,而不用创建新的对象。

 

工厂方法

后续补充

函数传值与引用

如果一个方法的参数是类似于int类型这样的数据,那么这个参数只是形参,并不会对原来的数据产生任何的影响

但如果参数为一个对象,那么这样的传参方式就是引用,方法会引用原来的对象,对原来的对象会有直接的影响

注意这里的引用和C++中的引用不同

这里引用是指向的意思

JAVA new一个对象是会新开辟一个空间来保持这个对象

赋值=实际上就是指向这个对象

例如:

swap(Emploee x,Emploee y){

  Emploee t =x;

  x=y;

  y=t;

}

并不会发生交换

这个函数的运行过程是这样的:

首先会创建两个临时变量x,y来指向已有的Emploee对象

然后在函数结束时,x,y会销毁,原来的Emploee对象并不会发生交换

 

 

 方法重载

和C++一样,JAVA支持函数重载

对于构造函数而言

如果不提供显式的构造函数

系统会提供一个默认的构造函数

对于每一个属性赋予默认值

同时可以在构造器里调用另一个构造函数

 

 

 也可以通过初始化块来对属性进行初始化

静态导入

如果在导入类时利用static修饰,那么对于类的静态方法可以直接调用,而不需要类名或者创建对象

 

Day 02

继承

extends关键字

子类不能直接访问超类的私有域,需要调用超类的接口来访问

也即

super.getxxx();

如果不用super关键字

那么就不不停地调用自身,类似于递归。

子类构造器

由于子类不能访问超类的私有域,所以在子类中无法对父类的私有域进行初始化。

有两种方法。

一种是调用每个私有域的初始化函数。

第二种就是在子类的构造器中调用超类的构造器

 

 

this和super关键字

 

 多态

一个超类的变量,可以指向超类对象,也可以指向子类对象。

但是不能访问没有在超类中声明的变量和方法

反过来一个子类的变量,不可以指向超类对象。

抽象abstract

利用abstract修饰的方法,在继承时可以不用实现

如果一个类中有抽象方法,那么这个类一定要用abstract修饰

抽象类不能被实例化,但可以定义一个抽象类的对象变量,只能非抽象子类对象

编译器只允许调用在类中声明的方法。

如果一个抽象类的对象指向了非抽象子类对象,但如果要调用在抽象类中没有声明的方法,程序会报错

ArrayList泛型类数组

ArrayList<xx>  name = new ArrayList<xx>();

在JAVA 7中可以简化

ArrayList<xx>  name = new ArrayList();

接口

关键字:

 interface  implements

接口不是类,所以不能创建对象

却能定义相关的变量来引用实现了接口的类

类似于超类的变量可以引用子类的对象

··

 

posted @ 2022-09-03 21:32  zzRh_5479  阅读(23)  评论(0编辑  收藏  举报