创建对象:new 例: Test t=new Test();
随机数:random
布尔值:boolean 返回值类型为true 或false
例:Integer a=new Integer(12);
Integer b=new Integer(12);
System.out.println(a==b);//返回布尔值
equals() :引用比较
例:System.out.println(a.equals(b)); //返回布尔值
导包:import java.util.Scanner; import java.util.*;
java注释:
//单行注释
/*
多行注释
*/
/**
文档注释
*/
标识符的命名规范:
字母、数字、下划线"_" "$"
不能为数字开头,只能以字母、_、$开始
特殊符号 $ _
严格区分大小写
不要与关键字冲突
驼峰法
类名:首字母大写
------------------------------------------------------------
变量:变量是内存(堆栈)中的一块存储区域,是存储数据的基本单元;
如何声明变量:
数据类型 变量名;
如何赋值:
变量名 = 值;
声明变量并赋值
数据类型 变量名 =值;
------------------------------------------------------------
\t :表示制表符,即显示一个空格
类:具有相同特点和行为的一组事物的集合
对象:具有具体的特点和行为的事物
对象就是类的具体表现形式
类是对象的模板
------------------------------------------------------------
oop
构造方法:
实例化对象
new
有虚拟机自动调用的,所以一般public
访问权限 类名(){
}
类名 对象名 = new 构造方法();
类中默认自带一个无参数的构造方法
一旦类中定义了带参数的构造方法,那么无参数的构造方法消失。要使用必须显示表示
最佳实践:
一个带所有参数的构造方法和不带参数的构造方法
this:当前对象本身
------------------------------------------------------------
重载:
参数的个数不同
类型不同
类型的顺序不同
方法名相同
作用于同一作用域
static:
修饰变量--》静态变量 --》归属类 类名.变量名
修饰方法 --》静态方法 类名.方法名相同
static{ //类定义加载的时候被执行,且在实例化之前
}
{ //代码块,每次在实例化对象之前被调用
}
package: com.yc.XX; 包名小写 代码的第一行位置
import com.yc.xx.Test;
------------------------------------------------------------
继承:
继承是利用现有的类创建新类的过程,
现有的类称作基类(或父类),
创建的新类称作派生类(子类)。
继承语法:
extends
访问权限 class 子类名 extends 父类名{
//子类继承父类中非私有的属性和方法
//子类可以拥有自己特有的方法和属性
//子类可以重写父类中的方法
//子类对象访问父类中的方法,如果该方法被子类重写,那么子类对象访问的是重写之后的方法
}
------------------------------------------------------------
Java:只允许单继承
super:
1.表示父类对象本身
2.作为父类的构造方法存在
super(参数列表);
访问权限:
public :公共的,不受限制,本类或他类都可以访问
protected:受保护的 ,包内友好,父子友好
缺省的:没有任何权限修饰符 int id ; 包内友好
private:本类中访问
public: 所有类
protected:包内友好 父子友好
缺省的 :包内友好
private :本类访问
final: 最终的
修饰的变量就是常量
修饰类: 最终类 不能被继承
修饰方法: 最终的方法 不可以重写
引用转型:
父类引用指向子类对象
BasicClass c = new SonClass();
------------------------------------------------------------
多态:便于扩展
使用父类的引用,调用同一个名称的方法,可以得到不同的
调用结果,这就是java中的多态。即:同一函数,多种形态
多态包括:
动态多态(重写):运行时多态,在运行时才确定调用哪个方法
必须要有继承的存在
子类必须重写父类中的该方法
必须由父类的引用指向子类的对象,并且是通过父类的引用调用被重写的方法
静态多态(重载):编译多态,在编译时决定调用哪个方法
只要构成了重载,形成了静态多态的条件
静态多态与是否发生继承没有必然联系
new谁调用谁只针对于方法,对于属性而言,引用名是谁就调谁的属性
在某些情况下,父类中无法(或没有必要)提供被覆盖方法的具体实现,
那么可以将此方法声明为抽象方法
使用关键字 abstract
[访问权限] abstract 返回值类型 方法名(形参列表);
抽象类:如果某个类中包含有抽象方法,那么该类必须定义为抽象类
[访问权限] abstract class 类名{
}
注意事项:
抽象类不可以直接实例化,只可以用来继承
抽象类的派生子类应该提供对其所有抽象方法的具体实现
如果抽象类的派生子类没有实现其中所有的抽象方法,那么该派生子类仍然是一个抽象类,
只能继承,不能实例化
抽象类中可以包含非抽象的方法,
构造方法和静态方法不可以修饰为 abstract
在某个类中所有的方法都是抽象方法时,可以考虑将该类定义为接口
interface :
[访问权限] interface 接口名{
//成员列表
}
实现接口:
与抽象类相似,不可以实例化,只能用于实现
实现接口的关键字:implements
[访问权限] class 实现类名 implements 接口名{
//成员列表
}
------------------------------------------------------------