为变量、类或方法起的名称 以字母,下划线、或者$符号开头 由字母、数字、下划线或者$符号开头 区分大小写,没有长度限制,不能使用关键字 尽量取得容易辨识,见名知意 |
/**
* @author 传智播客
*/
布尔值----boolean(只有true和false两种类型)
字符-------char ( 16 位的Unicode字符 用单引号( '' )标注;'a'表示字母a '\t' 表示制表符 '\u????'中?用确切的代替 申明并且初始化: char c = 'A' 申明变量 char ch1,ch2)
整数--------byte (8位) short(16) int(32) long(64)【以0开头表示八进制 ;以0x开始表示16进制】
浮点型-----float double
/**
* @author 传智播客
*/
<修饰符> Class <类名>{
<属性申明>;
<构造器申明>;
<方法申明>;
}
<修饰符> <类型> <名称>;
/**
* @author 传智播客
*/
final:修饰常量,常量的值不能被修改【例如 final int CONSTANT = 50;】
static:申明静态变量[类变量] static int nCount;
/**
* @author 传智播客
*/
<修饰符> <返回值类型> <名称>[参数列表]{
语句;
}
/**
* @author 传智播客
*/
<修饰符> <类名>[参数列表]{
语句;
}
注释:构造器没有返回值,void也不行;如果有返回值,方法会被当做普通函数执行;
1、不能现实的调用 2、在创建一个类的对象时,系统自动调用构造器为该对象初始化 3、构造器只能和new关键字一起使用 |
类名 对象名 = new 构造函数名称(成员变量的初始值) ; |
1、每个类至少有一个构造器 2、如果不编写构造函数,系统自动添加默认的构造函数【默认构造函数不带参数,默认构造函数函数体为空】 3、不必编写构造函数就能使用new XXX() 创建实例 |
<对象名> = new <类名>(实参) |
对象为null时,Java自动调用垃圾回收机制清除对象,释放对象占用的内存空间 手动编写finalize() 方法撤销对象 -- 不提倡 |
栈内存:方法中定义的变量(基本类型和引用类型)。超过变量的作用域,自动释放变量的内存 堆内存:new 创建的对象(包括数组),由系统自动回收 |
/**
* @author 传智播客
*/
<修饰符> class <名称> extends <父类>{
申明;
}
1、一个类中有多个同名的方法 2、条件:参数的个数不同;参数的类型不同 3、如果两个方法只有返回值不一样,不是重载,会报错 |
1、子类可以修改父类继承过来的行为 2、子类可以创建和父类的方法不同功能的方法,但是下面必须相同:【方法名、返回值、参数列表】 |
往往在覆盖方法时,真正不目的不是代替现有的行为,而是在某些方面扩展那些行为; 类中使用super关键字指向父类的成员 包括数据和方法; 3中使用方法: super.方法名([参数表]); ---- 调用父类的方法 super.成员变量名; ---- 访问父类的成员变量 super([参数表]); ---- 调用父类的构造函数 |
子类从父类继承所有的方法和变量 子类不能继承父类的构造函数 有两种方式可以获取构造函数:1、使用默认的构造函数 2、编写1个或者多个构造函数 |
要调用父类的构造函数,必须在子类构造函数的第一行使用super关键字 要调用特定的父类的构造函数,必须为super提供参数 如果没有this或者super调用,编译器会插入一个对父类无参数构造函数的隐式调用: super(); |
类型为X的参考变量,指向的对象类型既可以是X,也可以是X的子类; 如: Employee x = new Manager(); Employee y = new Employee(); |
静态方法在编译时候,根据调用该方法的类或者对象所属的类决定 实例方法在运行时根据对象所属的类决定 如:Super s = new Sub(); 编译时候S是Super类的对象,运行时 S 指向Sub类的对象; |
/**
* @author 传智播客
*/
abstract class 类名{
abstract 返回值类型 方法名[参数列表];
...
}
/**
* @author 传智播客
*/
abstract class Animal{
public abstract void eat();
}
class Dog extends Animal{
public void eat(){System.out.println("狗吃骨头");}
}
class Cat extends Animal{
public void eat(){System.out.println("猫吃老鼠");}
}
class Wolf extends Animal{
public void eat(){System.out.println("狼吃羊");}
}
final 类不能被子类化;如Java.lang.String 是final 类,这样做是基于安全的考虑; 标记为final的方法不能被覆盖;处于安全的考虑,如果方法的实现不应改变,而且对对象的一致性要求比较高,则可以创建一个final方法。 |
使用interface关键字申明,可以支持多重继承 |
1、接口本身只是提供定义,使用时,必须通过类实现接口( implements ) 实现接口时,必须实现所有的方法。否则该类还是抽象类( abstract class )。 2、一个雷尅实现多个接口。 3、扩展子句(extends )必须在实现子句( implements )之前 |
package <顶层包名>[.<子包名>]*; |
1、如果有包申明,必须在源文件开始处申明。他的前面只能有空白和注释,不能有其他语句; 2、每个源文件只能有一个包申明; 3、如果没有包申明,则该类属于"默认"包(没有名称的包) 4、包的名称有层次,且用 . 分开; |
import <包名>[.<子包名>].<类名> 或者import <包名>[.<子包名>].*; |
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |