(完整word版)Java知识总结完整版,推荐文档 联系客服

发布时间 : 星期一 文章(完整word版)Java知识总结完整版,推荐文档更新完毕开始阅读42c9f84f148884868762caaedd3383c4ba4cb456

方法重载(overload)

方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时根据不同的参数列表选择对应的方法 this

在类的方法定义中使用this关键字代表使用该类的对象的引用 有时使用this可以处理方法中成员变量和方法参数重名的问题 This可以看做是一个变量,它的值时当前对象的引用 public class Leaf{ int I = 0;

Leaf(int i) { this.i = i}; Leaf increament() {

i++;

return this; }

void print() {System.out.println(“i = ” + i);} public static void main(String[] args) { Leaf leaf = new Leaf(100);

leaf.increament().increament().print(); } }

static

在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员

静态方法不再是针对某个对象调用,所以不能访问非静态成员 可以通过对象引用或类名(不需要实例化)访问静态成员或方法

package&import

为了解决类的命名冲突问题,Java引入的包(package)机制,提供类的多重类命名空间

package语句作为Java源文件的第一条语句,指明该文件中定义的类所在的包(若缺省该语句,则指定为无名包,裸体类)

Java编译器把包对应于文件系统的目录管理,package语句中,用“.”来指明包(目录)的层次,例:package com.yao;则该文件中的类位于.\\com\\yao目录下

如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.yao.MyClass),Java编译器才会找到该类 也可以使用import在文件的开头引入要使用的类,例:import com.yao.MyClass 可以不需要用import语句直接使用java.lang包中的类

访问位于同一个包中的类不需要引入

class文件的最上层包的父目录必须位于classpath下

JDK中主要的包介绍

java.lang-包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能,使用时不需要引入(lang-language) java.awt-包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI) java.applet-包含了applet运行所需的一些类 java.net-包含了与网络相关的操作的类

java.io-包含能提供多种输入/输出功能的类

java.util-包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数

java运行时所需的类位于jdk\\jre\\lib\\rt.jar 打jar包,定位到需要打包的最上层的父路径

jar –cvf xxx.jar *.* (*.*指目录中所有文件夹打包) jar包也可设为classpath变量

继承extends

通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)(包括private成员,拥有私有变量的所有权,但无使用权)

Java只支持单继承,不允许多继承,一个子类只能有一个基类,一个基类可以派生多个子类

访问控制

权限修饰符public、protected、private、default(包访问权限) 修饰符 类内部 同一个包 子类 任何地方 private √ X X X default √ √ X X protected √ √ √ X public √ √ √ √ 对于class的权限修饰符只可以用public和default public类可以在任意地方被访问

default类只可以被同一个包内的类访问

方法重写overwrite/override

在子类中可以根据需要对从基类中继承来的方法进行重写

重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型 重写方法不能使用比被重写方法更严格的访问权限

super

在Java类中使用super来引用基类的成分

继承中的构造方法

子类的构造过程中必须调用其基类的构造方法

子类可以再自己的构造方法中使用super(argument_list)调用基类的构造方法

使用this(argument_list)调用本类的另外的构造方法 如果调用super,必须写在子类构造方法的第一行 如果子类的构造方法中没有显式地调用基类构造方法,则系统默认调用调用基类无参数的构造方法

如果子类构造方法中既没有显式调用基类构造方法,而基类中又没有无参的构造方法,则编译出错

Object类

Object类是所有Java类的根基类

如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类 public class Person { … }

等价于:

public class Person extends Object { … }

toString()

Object类中定义有public String toString()方法,其返回值时String类型,描述当前对象的有关信息,返回一个字符串,该字符串由类名(对象是该类的一个实例)+ “@” +此对象哈希码的无符号十六进制表示组成,即getClass().getName() + ‘@’ + Integer.toHexString(hashCode()) 在进行String与其他类型数据的连接操作时(如:System.out.println(“info” + person)),将自动调用该对象类的toString()方法

可以根据需要在用户自定义类型中重写toString()方法,建议所有子类都重新此方法

equals()

public boolean equals(Object obj)

x.equals(y)对于任何非空引用值,当且仅当x和y引用同一个对象时,此方法返回true(x==y具有值true)

JDK提供了一些类,如String,Date等,重写了Object的equals()方法,调用这些类的equals()方法,x.equals(y),当x和y所引用的对象时同一类对象且属性内容相等时(并不一定时同一对象),返回true,否则返回false 建议重写 例子:

String s1 = new String(“Hello”); String s2 = new String(“Hello”);

System.out.println(s1 == s2); //false System.out.println(s1.equals(s2)); //true

对象转型(casting)

一个基类的引用类型变量可以“指向”其子类的对象

一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)

可以使用 引用变量 + instanceof + 类名,来判断该引用变量所“指向”的对象是否属于该类或该类的子类

子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为乡下转型(downcasting),需强制转换

动态绑定和多态

动态绑定是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际类型调用其相应的方法

1.要有继承 2.要有重写

3.父类引用指向子类对象

抽象类

用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法

含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写

抽象类不能被实例化

抽象方法只需声明,而不需实现

final

final的变量的值不能被改变 final的方法不能被重写 final的类不能被继承

接口interface 实现implements

接口是抽象方法和常量值得定义的集合 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含了常量和方法的定义,而没有变量和方法的实现 多个无关的类可以实现同一个接口 一个类可以实现多个无关的接口

与继承关系类似,接口与实现类之间存在多态性 接口中声明属性默认为public static final的,也只能是public static final的

接口中只能定义抽象方法,而且这些方法默认为public的,也只能是public的

接口可以继承其他的接口,并添加新的属性和抽象方法