Java高级教程概念整理(一)

Java概念自我总结

1.类

拥有属性和方法

 

2.构造器

对象是构造的,不调用构造器,就不能创建一个新对象。构造器是一段无论何时使用new关键字都要运行的代码。

一个类可以声明一个或者多个构造器。

如果程序员在声明类时没有声明构造器,Java编译器将自动生成默认的构造器。默认构器没有参数,并且构造器代码为空。

在声明类时显式声明了带有参数的构造器,编译器不再提供没有参数的默认构造器,会导致创建新对象(例如new demo())时编译失败。

 

3.java源文件

如果有导入语句,则所有的导入语句必须位于所有类声明之前;如果使用包声明,则包声明必须位于类声明和导入语句之前,包声明语句之前只能是注释行和空行。

一个源文件中可以声明一个或多个类,但只能有一个声明为公有的。源文件的名称必须和声明为公有的类的名称相同。

java编译器默认为所有java源程序都引入java.lang中所有的类(import java.lang.*),因此如果我们要使用java.lang中的类,可以直接使用而无须事先使用import语句。 

 

4.继承

把被继承的类(extends)关键字后面的类称为父类或超类(superclass),父类也称为基类;把通过继承产生的类称为子类(subcalss),子类也称为派生类。 

 

5.类成员访问权限

包外子类有权访问其父类的保护成员,指的是通过继承来使用该成员,而并不意味着包外子类可以使用父类实例的引用来访问该保护成员。

访问控制修饰符(public、private、protected)是不能用于修饰局部变量的。

 

6.重写

重写也叫覆盖或覆写。

对一个方法的重写必须发生在具有继承关系的两个类中,即子类对父类方法的重写。它要求两个方法的参数个数和类型以及返回值类型都必须一致,这样才称为方法重写。

方法重写的规则如下:
① 方法名必须与被重写的方法一样;
② 参数列表必须与被重写的方法一样;
③ 返回类型必须与被重写的方法一样;
④ 访问控制级别不能比被重写的方法严格。

 

7.多态

面向对象程序设计的三大重要特征是:封装、继承和多态。

我们说的多态指的是变量的多态而非对象的多态。

一个对象只能有一种形式。但是,一个引用变量可以指向不同形式的对象,因此它是多态的。

如果将一个子类对象赋值给一个父类类型的引用变量,则在编译时系统把它当成一个父类类型的引用变量看待。因此,通过该引用变量只能访问父类中声明过的属性和方法,子类中增加的成员被隐藏了---这就是“编译时的多态性”。

Persons = new Student();System.out.println(s.getInfo());从程序的执行结果可以看出,虽然编译时s变量声明为 Person类型,但是由于运行时s变量实际引用的是Student类的对象,因此进行方法调用时,实际调用的是 Student类重写后的getInfo方法。这是多态性在运行时表现出来的一个重要特征,称为虚方法调用。它指的是方法调用时,获得的是运行时与变量类型(也就是该变量实际引用的对象类型)相关的行为,而不是编译时与变量类型相关的行为。

如果成员变量出现隐藏,引用的是父类变量;如果成员方法出现重写,引用的是子类方法。

 

8.重载

在有些情况下,需要在同一个类中(或者其子类中)定义多个同名的方法,这些方法完成类似的功能,只通过参数的不同来区分它们,这就是重载(overload)。重载有两种情况:普通方法的重载和构造器的重载。

从含义上说,只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。

方法重载时要遵循一定的规则:

① 重载方法的参数列表必须和被重载的方法不同,并且这种不同必须足以清楚地确定要调用哪一个方法。

② 重载方法的返回类型可以和被重载的方法相同,也可以不同,但是只有返回类型不同是不够的。

③ 重载方法可以改变访问控制级别。

子类不能继承父类的构造器(注意:构造器是不能继承的),因此,要调用父类构造器,必须在子类构造器代码的第一行使用super关键字,以调用父类相应的构造器(参数必须匹配),用于完成子类对象的部分初始化工作。

在构造器中使用this和super调用时,遵循下面的规则:
(1)如果在构造器中显式使用this或super调用,两者不能同时出现。并且,this或super调用必须位于构造器代码的第一行,在其后(而不能在它之前)可以有其他的初始化代码。
(2)如果在构造器中没有显式使用this关键字调用重载的其他构造器,也没有使用super关键字调用父类的构造方法,则系统默 认 调 用 父 类 的 无 参 构 造 器,也即super()。此时,如果父类中没有无参构造器,则编译会出错。 例如上面程序 216 的最后一个构造器。

 

 

9.static关键字

在静态方法中除了访问方法自身的参数、局部变量、静态成员外,不能访问任何非静态的变量。

在使用静态成员时,还需要注意以下事项:
① 由于不需要创建类的实例就可以使用静态成员,因此静态成员没有this值。
② 不能在子类中重写静态方法。
③ 你static只能用于修饰属性、方法和内部类,而不能用于修饰一般的类。 

静态块通常用于做一些静态属性的初始化工作,其中的代码仅在所属的类被加载时执行一次。从执行的时机上看,是在类的静态属性被分配空间和初始化之后执行的。

 

10.final关键字

被final修饰符修饰的类称为最终(final)类,它的一个显著特征是不能被继承。

最终变量通常在声明的同时进行初始化。如果在声明的时候没有初始化(此时该最终变量称为空的最终变量),则应该在构造器中进行初始化,而且只能赋一次值。而方法中的最终局部变量,可以在方法内部的任意时刻进行初始化,但也只能初始化一次。

 

 

11.抽象类

抽象类是不能被实例化的(因为它是抽象的、不具体的类),它只能在继承中发挥作用;而抽象方法也只能在子类中被重写(实现)后才能用子类的对象调用。

使用抽象类和抽象方法还需要注意如下几点:
(1)在一个类中,如果有一个方法是抽象的,该类就必须声明为抽象的(当然,将不含
有抽象方法的类声明为抽象类也是可以的,不过很少这样用)。
(2)如果子类没有实现父类中所有的抽象方法,那么该子类也必须声明为抽象的。
(3)一个类不能同时被声明为final和abstract。因为被声明为final的类是一定不能子类化的,而被声明为abstract的类又必须在子类化后才能使用,这是两个相反意义的修饰符。 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值