1.基本数据类型 – 整数型:byte short int long 默认为int 计算时需要转换 – 浮点型:float double 默认为double – 布尔类型:boolean – 字符型 2.引用类型 包括数组,类,接口 类型 引用对象 = new 构造方法( ); Person p = new Person(); Person作为一个引用类型 3.函数或方法 – 方法的重载:函数名一样,参数个数、类型不一样,返回值可相同可不同 – 重载和重写的区别 重写是继承 函数名,参数类型,个数相同 发生在父类和子类关系的类,子类定义与父类完全相同的方法,子类调用时候直接调用子类重写的方法 重载不用继承 函数名相同,参数的类型,个数,顺序不同 发生在一个类中4.面向对象 设计ATM机的终端系统: ATM机; 银行卡 钱 类是抽象的 创建的对象是具体的 数据传递时候:考虑的是对象与对象之间的传递数据 对象是类的具体实例 访问权限 –四个 private:本类中 默认: 本包中 protecte:本包中、外包的子类中 public:整个项目中 ①封装 把对象的属性和行为结合在一个独立的系统单元内部 – 封装.jar包 cmd命令:javac 执行java文件 使其生成.class文件 javac -d 执行.java文件和.class文件 压缩成.jar文件之后需要重新解压 修改met文件夹中的文件 将包名和类型全部修改 重新压缩 否则执行不了 ②继承(泛化) extends 父类:超类,基类 子类:派生类 super():调用父类构造器 this():调用本类构造器 ③多态 多态必须建立在继承的基础上,没有继承就没有多态 当父类作为方法的形参时,所有的子类都可以传递
父类的引用指向子类对象
Fruit f = new Apple();//Fruit作为父类,指向子类Apple
构造器 完成对象的创建(实例化) 一般也完成对象的初始化
public class Person{
String name;
int age;
String sex;
//构造器
public Person(String name, int age,String s){
this.name=name;
this.age=age;
this.sex=sex;
}
}
构造方法 创建对象 为属性赋初始值 默认一个无参数的构造方法 但是一旦定义了有参数的构造方法,则不会生成默认的无参构造方法 关于父类子类的执行顺序
变量 – 局部变量:定义在方法体中,或方法的形参 – 实例变量:类的属性,全局变量 – 静态变量:声明为static的属性 内存的类别
Penson p = new Person("aa","11","male");//对象名 p 存放在栈内存中 ,属性值存在堆内存中,p 也称为对象的引用
栈内存 – 基本数据类型的局部变量,对象的引用值 堆内存 – 对象的属性,数组的元素 有New 就用堆内存 在其他类中或者方法中 ,要想访问对象的方法或者属性,就必须实例化这个类,然后通过对象名和点操作符来完成;在本类中直接访问 垃圾回收机制:作用于堆内存super() 调用父类的构造方法 static 类变量(静态变量) 所有类共享,只在类加载的时候创建,执行一遍 可以直接调用,类存在static变量就存在局部变量不允许被static修饰实例变量 非static属性 非静态方法 必须 用对象来调用
public class Test{
public void add(int a,int b){}
public static void main(String []args){
Test t = new Test;
t.add(1,2);
}
}
//add是非静态方法,main方法是静态的,所以只能先创造出Test对象,再调用add函数
数据类型的转换 向上转型:子类转换为父类,具有继承和实现关系,损失子类新扩展的属性,方法 向下转型:强制转换
Animal a = new Cat();//向上转换
Cat c = (Cat)a;//向下转换
instanceof 运算符判断经过上溯转型后是哪个子类的
object instanceof class//判断一个对象是否属于一个类
object instanceof interface//判断一个对象是否属于一个接口
//返回值都是boolean
final 可以修饰: – 类:不能被继承了 – 变量:相当于常量 – 方法: 接口 中只有常量和抽象方法 常量:public static final 抽象方法:public abstract 抽象类 用 abstract 定义的类