目录
十一、package和import语句(Eclipse和idea开发会自动生成)
一、对象和类的概念
1.对象是Java程序的核心,在Java程序中“万事万物皆对象(必须首先定义类,你才能有对象)。”
2.对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体。
3.类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量以及方法。
4.J2SDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。
5.成员变量等于属性,方法等于函数。
6.补充:Java中的对象是通过引用对其操作的。
二、成员变量初始化问题
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化,成员变量的作用范围为整个类体。
三、如何在内存中区分类和对象
1.类是静态的概念放在代码区。
2.对象是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量),而方法只有一份,执行的时候才占用内存。
四、对象的创建和使用
1.必须使用new关键字创建对象
2.使用对象(引用).成员变量或引用对象的成员变量。
3.使用对象(引用).方法(参数列表)来调用对象的方法。
4.同一个类的每个对象有不同的成员变量存储空间。
5.同一个类的每个对象共享该类的方法。
6.对象用计算机语言对问题域中事物的描述,对象通过“属性”和“方法”来分别对应事物所具有的静态属性和动态属性。
7.非静态方法是针对每个对象进行调用(即调用非静态方法是针对每个具体new出来的对象而言的)。
五、类和类之间的几种关系
1.关联关系:一个类的方法里面是另一个类的具体的某一个对象(即某个方法的参数是一个类的对象),例如方法“教研究生”,而参数是一个对象研究生(这是一种最弱的关系)。
2.继承关系(一般和特殊):××是一种××只要这句话能够说通,就可以考虑用继承关系来封装,例如:游泳运动员是一种运动员。
3.聚合关系(整体和部分):××是××的一部分,如果这句话能说通,他们之间的关系就是聚合关系。其中聚合关系又分为“聚集”和“组合”这两种关系。
(聚集关系:关系相对分散) (组合关系:关系紧密,密不可分)
六、构造方法(函数)
1.使用new+构造方法创建一个新的对象。
2.构造方法是定义在Java类中的一个用来初始化的对象的函数。
3.构造方法与类同名且没有返回值。
4.当没有指定构造方法时,编译器为类自动添加形如类名(){}的无参构造方法。
补充:当一个方法调用完成之后,栈里面为它分配的所有空间全部消失。
七、Java约定俗称的命名规则:
1.类名的首字母大写。
2.变量名和方法名的首字母小写。
3.运用驼峰标识(方法名和变量名等)。
八、方法重载(overload)
一个类中可以定义有相同的名字,但参数不同的多个方法。调用时会根据不同的参数来选择对应的方法
所谓参数不同指的是:(1)参数个数不一样
(2)参数类型不一样
只要这两个方面有一个方面就行了。
注意:Java中方法重载和返回值和修饰符没有任何关系。
九、this关键字
1.在类的方法定义中使用this关键字代表使用该方法的对象的引用。
2.当必须指出当前使用方法的对象是谁时要使用this关键字。
3.使用this可以处理方法中成员变量和参数重名的情况。
4.this可以看作是一个变量,它的值是当前对象的引用。
5.就近声明原则:当你确定不了一个参数到底指哪一个变量时(确定不了一个变量到底指的是你声明的哪一个变量的时候)找离他最近的声明。
十、static关键字(可用于计数)
1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。
2.用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员(静态方法不再是针对某个对象调用,所以不能访问非静态成员)
3.可以通过对象引用或类名(不需要实例化)访问静态成员。
4.静态方法可以访问静态方法,普通方法可以访问静态方法,静态方法不能访问普通方法或者属性,普通方法可以访问普通方法。普通方法是针对某个对象调用,静态方法不针对某个对象调用。
注:在成员变量前加上static关键字,main方法才能访问。
十一、package和import语句(Eclipse和idea开发会自动生成)
1.为便于管理大型软件系统中数目众多的类,解决命名冲突问题,Java引入包(package)机制,提供类的多重类命名空间。
2.package(包)的名字约定俗成的为公司域名的倒写
3.package语句作为Java(源文件)的第一条语句,指明该文件中定义的类所在的包(若缺省该语句,则指定为无名包)
包实则就是一个文件夹,它的格式为:
package pkg1[pkg2][pkg3...]];
4.Java编译器把包对应于文件系统的目录管理,package语句中,用‘.’来指明包(目录)的层次,例如:使用语句
package com.example;
则该文件中所有的类位于.\com\example目录下
5.如果把一个类放到包(package)里面,第一句写package,package后面想跟多少层包就跟多少层包,但是有一点必须注意,你编译出来的这个class文件必须位于正确的目录(和包的层次要完全一致)下面。
6.如果你想让在另一个类里面用我们在这个包里面的类,必须把名字写全了或者导入该类所在的包,import ...
7.如果将一个类打包,则使用该类时,必须使用该类的全名(例如:com.example.MyClass),Java编译器才会找到该类,也可以使用import在文件的开头引入要使用的类,例如:
import com.example.MyClass;
import java.util.*;
MyClass myClass = new MyClass();//可以直接使用类名
注意:可以不需要用import语句直接使用java.lang包中的类,因为java已经默认为你导入该包,不需要手动导入。
8.访问位于同一个包中的类不需要引入。
9.class文件的最上层包的父目录必须位于classpath下(eclipse和idea不用担心这个问题)。
10.执行一个类需要写全包名。
十二、JDK中主要的包介绍
1、java.lang--包含一些Java语言的核心类,如:String、Math、Integer、System和Thread,提供常用功能,java.lang不需要引入包,其他的包必须引入。
2.java.awt--包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)
3.java.applet--包含applet运行所需的一些类。
4.java.net--包含执行的网络相关的操作的类。
5.java.io--包含能提供多种输入/输出功能的类。
6.java.util--包含一些实用的工具类,如定义系统特性、使用与日期日历相关的函数。
7.java.sql--数据库包。
十三、打包成jar包
在命令DOS窗口下,使用命令jar -cvf test.jar *.*即可把当前目录下的文件打包成jar包(类似于压缩包),把包好的jar可以直接给他人使用。其中,*.*表示当前目录,test.jar表示打包后的名称。
十四、Java权限修饰符
访问控制符 | 类内部 | 同一个包 | 子类 | 所有类 |
---|---|---|---|---|
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
1.Java权限修饰符public protected private置于类的成员变量前,用来限定其他对象对该类对象成员的访问权限
2.对于外部class的权限修饰符只可以用public和default修饰符,因为外部class上级目录就是包,对应的访问的权限就是public和default,而内部类四种权限修饰符都可以使用。
3.对于类修饰符而言,public类可以在项目的任何地方访问,而default类(缺省)只可以被同一个包内部的类访问,也就是常说的“包权限”,对于变量而言同理。
4.对四种权限修饰符的进一步解释(结合上年表格理解):
private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问。其子类不能访问,更不允许跨包访问。
default:即不加任何访问修饰符,通常称为“默认访问模式”。被其修饰的类、属性以及方法,只允许在同一包中进行访问(包访问权限)。
protected:介于public和private之间的一种访问修饰符,一般称之为“保护型”。被其修饰的类、属以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性和方法不仅可以跨类访问,而且允许跨包访问。
十五、继承
Java中使用extends关键字实现类的继承机制,其语法规则为:
<modifier> class 类名 [extends 父类] [implements 接口]{
...
}
通过继承,子类自动拥有父类的所有成员变量和方法,Java只支持单继承,不允许多继承。一个子类只能有一个父类,一个父类可以有多个子类。
1.子类比父类“大”,子类对象包含一个父类对象。
2.子类可以从父类那里继承了所有成员变量及方法,包括前面带有private修饰符的也被继承了下来,但这时子类只有访问权没有修改权,也就是只能读不能改。
3.所有修饰符都可以修饰成员变量、成员方法以及构造方法。
4.为了代码安全起见,修饰符尽量不要使用权限大的,适用即可。比如成员变量,如果没有特殊需要,尽可能用private。
5.修饰符修饰的是“被访问”的权限。
补充:Java面向对象基本概念-引用
1.Java语言中除基本数据类型外的变量类型都称之为引用类型。
2.基本数据类型占用一块内存,引用类型占用两块内存。
3.Java中的对象是通过引用对其操作的。
4.集成方式包括单一继承和多重集成,但是Java只支持单一继承,但是可以实现多个接口。