【类】类是同一类对象的抽象。类是由静态属性和动态属性(方法)构成。
【对象】对象是对象的实例。
【类与类之间的几种关系】
1、关联关系
这是最弱的一种关系,一个类A的对象在类B的方法参数中被引用。
2、继承关系(一般与特殊)
一个类可从多个类中继承。
3、聚合关系(整体与部分)
球队由队长和队员构成。
4、实现关系(接口中)
工人和农民照顾猫咪(照顾实现的过程)。
5、多态关系
【成员变量初始化】
定义成员变量可对其进行初始化,若不进行初始化,java使用默认的值对其初始化。
构造方法的名称必须与类的名相同,且不能加返回类型(void)也不行!!!
类名的首位字母需大写!!方法和变量名首字母需小写!!并且命名方式按照驼峰起名法!!!
new出的东西在heap中占用一部分新的空间,只要一经new,则开辟一块新的内存!!!
【方法重载】
在一个类中可定义多个名称相同的方法,但是其参数必须不能相同!!!返回类型可以不相同!!!
【this关键字】
1.在类的方法定义中使用的this关键字代表该方法的对象的引用。
2.this看做一个变量,是当前对象的引用。
3.当必须指出当前使用方法的对象是谁时要使用this。
【static】
一、关于静态成员变量
1、一个类可定义多个静态成员变量。
2、一个类中所有的对象共用声明的一个静态变量。
3、静态成员变量使用时直接:类名.静态成员变量名称。
二、静态方法
1、用static声明的方法是静态方法,在使用时可用对象名或类名()不需实例化,直接:类名.方法名(比如Systemn.out)。
2、在静态方法中,不能访问该类的非静态成员变量!!!!!!
【package & import】
为便于管理大型企业软件系统中众多的类,解决命名冲突,java引入包机制,提供类的多重命名空间。
1、package 放第一行!!!
2、使用方式: package pkg1[.pkg2[.pkg3...]]。
3、只有同一project下的类可用import引用。
4、不同工程下的类需打包成jar包才能引用。
(在jdk中的rt.java中除java.lang下的类可直接使用,其他的类必须用import引用(例如;java.net 、java.io 、java.util等)。
打包jar的方法(用命令指示符操作):
1)进入所在文件 。
2)输入jar 。
3)jar -cvf 命名.jar*.* 。
【访问控制】
1、类的成员变量的访问权限
权限类型 | 类内部 | 同一个包 | 子类 | 任何地方 |
private | yes | |||
default | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes | yes |
2、类的访问权限
类中只有default和public两种权限修饰方法。
1)、public可在任意地方被访问。
2)、default只能被同一个包内部的类访问。
【类的继承】
通过关键字extends继承。继承方法:class 子类名 extends 父类名 。
1、在java中一个子类只能有一个父类,一个父类可有多个子类。
2、子类通过继承,子类可拥有父类的所有成员(包括成员变量和方法)。
【方法重写】
子类继承的父类的方法不够使用时,可将父类的方法进行改写,即方法重写。
1、重写方法不能比被重写的方法的访问权限更严格。
2、重写方法的参数及方法名必须与被重写的方法相同!!!
【super关键字】
super指向当前对象的父类对象。
【继承中的构造方法】
1、子类必须调用其父类的构造方法。
2、子类可在自己的构造方法中使用super(arguement list)调用父类的构造方法。
3、使用this(arguement list)调用本类的另外的构造方法。
4、如果调用了super(arguement list),必须写在子类构造方法中的第一行!!!
5、如果子类中的构造方法没有显示调用父类的构造方法,那么系统默认调用父类中无参的构造方法。
6、如果子类的构造方法中没有显示调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错!!!
【Object类】
Object类是所有类的根基类(父类)、
public class A{} ——>(等价于)public class A extends Object{}
1、public String toString(){}
其返回值是 包名+类名+哈希码 。
(哈希码都独一无二的代表一个对象,并通过哈希码可以找到这个对象)
2、public boolean equals(Object obj) {}
默认功能是判断两个引用变量指向的对象是否是同一个对象 。
【对象转型】
1、一个父类的引用类型可以指向子类的对象。
2、子类引用不可指向父类对象。
2、一个父类引用不能访问其子类对象的新增成员。
3、可以使用方法 instanceof 判断该引用变量所指向的对象是否属于该类或该类的子类。
4、子类的对象可以作为父类对象来使用称作上转型(upcasting);反之称为下转型(downcasting)。
【动态绑定/迟绑定/多态】
目的是是可扩展性达到最好。
1、多态是在运行(非编译)的过程中,判断所引用对象的实际类型,根据其实际类型调用其相对应的方法。
2、三个必要条件:
1)、有继承
2)、有重写
3)父类引用指向子类对象
【抽象类】
1、用abstract关键字修饰的类是抽象类;用abstract修饰的方法是抽象方法。
2、抽象类只能被继承,不能被实例化!!!
3、抽象方法只需声明,不需被实现。
4、含有抽象方法的类必须被声明成抽象类;抽象类必须被继承;抽象方法必须被重写。
【final关键字】
1、被final修饰的变量不能被改变(局部变量和成员变量)
2、用final修饰的方法,不能被重写。
3、被final修饰的类不能被继承。
【接口】
一、
关键字interface、implements
1、多个无关类可以实现一个相同的接口。
2、一个类可以实现多个无关的接口。
3、与继承关系相似,接口与实现类之间存在多态性。
4、定义java类的语法格式:
<modifier>class <name>[extends<superclass>][implements<interface>[,<interface>]*]{
<declarations>*
}
5、接口是抽象方法和常量值的定义的集合。
6、从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包括常量和方法的定义,而没有变量和方法的实现。
7、接口定义举例:
public interface Runner{
public static final int id=1 ;// 等价于int id=1 ;
public void start();
public void run() ;
}
二、接口特性;
1、接口可多重实现(即一个类可实现多个接口,即一个类可多重继承)
2、接口中声明的属性默认为public static final,且也只能是public static final(成员变量前的修饰符可省略)。
3、接口只能定义抽象方法,且这些方法只能默认是public的。
4、接口可继承其他的接口,并添加新的属性和抽象方法。
5、接口可被其他接口继承。
6、结构不可以被实例化!!!
【内部类】
位置:写在在包装类中,与包装类中的属性和方法并列。
修饰:private
1、好处:
1)、可以方便的访问包装类中的成员。
2)、可以更清楚的组织逻辑,防止不应该被其他类访问的类进行访问。
**3)、当一个类要实现两个接口中名字相同的方法,无法做到同时实现。
2、何时使用:
该类不允许或不需要其他类进行访问时。