JAVA EE (除了基本类型以外,其它类型都是引用类型!)
1、get set 方法: 使用 alt + shift + s (快捷设置) (Generate getters and setters)
2、string类型是个引用类型
3、数组:
数组也是引用类型,以对象的形式存在
int [] a; a = new int [10] 或 int [] arr2 = new int [10] 或 int [] arr2 = {1,2,3,4};
引用类型的数组初始化值是null,赋值时数组元素存的是对象的地址(通过这个地址来操作这个对象)
排序:Arrays.sort(a) 排序a(从小到大) (操作数组的类;Arrays) (可以查阅API)
使用 static 修饰,可以不用创建对象,直接调用(工具类的一般都用static修饰)
拷贝: int [] b = Arrays.copyOf(a, a.length); 把a拷贝到b
4、面向对象编程:封装 、 继承 、多态
子类可以继承分类的属性和方法(一个子类只能有一个父类,一个父类可以有多个子类)
public class Zi extends Fu{}
顶级父类Object,所有的类创建时都会默认继承它
父类中如果有不想被子类继承的方法,添加private私有化方法
子类中可以对方法进行重写和覆盖(直接定义和父类名字一样的方法)
子类不能将父类中的方法在覆盖时定义成更私有的方法(如不能从 public 变成 private)
子类中的异常不能比父类中的多
可以用 super 调用覆盖前的父类方法
super关键字(父类的引用):
普通方法里: super.方法名称();调用被覆盖的方法
构造器里: 默认的第一行,调用父类的构造器初始化参数 (可以传参给父类来初始化)
super在构造器中一定要放到第一行
如:public Zi(String name) {
super(name);(传给父类来初始化,若是空参构造器可以不传)
System.out.println("子类有参构造器");
}
5、方法的重载 (同一个类中)
方法名称相同从,参数列表不同,与返回值无关
6、this关键字
构造器可以发生重载
构造器相互调用使用 this 关键字,必须在构造器的第一行,this()根据参数列表调用相应的构造器
this 代表本类对象,当前对象(区分重名的变量)
7、对象的构造和初始化过程
属性 方法 构造器 {}游离块( 初始化块 ) static{}初始化器(初始化static修饰的属性,无论创建多少次对象只执行一次)
无论选择哪种构造器,游离块都先执行
大致如下;
父类初始化器
子类初始化器
父类的初始化块
父类空参构造方法
子类初始化块
子类空参构造器
8、封装类(包装类)
ctrl + e 获得返回值
能实现不同数据类型的转换, 如sting转int
自动装箱 如: Integer i = 10; (基本数据类型转换成对象)
自动拆箱 : 遇到对象自动转换为基本数据类型 (将对象转换成基本数据类型)
toString 返回一个文本形式(string)的地址 (可以用 alt + shift + s来重载)
可以用equals(需重写)来判断数据是否相等(对比 ==) (alt + shift +s)
看源码 鼠标放上对象上面 按 ctrl
9、可变参数
public static void method (int ... is){}
10、static
static 修饰的方法能调用普通方法吗? 不能 反之可以
static 修饰的属性和方法从属于类
普通的从属于对象
11、final
final 修饰类 类不可以被继承
修饰变量 变量的值不能改变
修饰方法 方法不能被覆盖
12、abstract类 和 abstract方法 (alt + shift + a 能划线同时输入多行)
抽象方法只能在抽象类中,抽象类中可以有普通方法
抽象类中的抽象方法的子类必须实现吗? 是的(必须实现,若不实现子类也变成抽象类)
注意:抽象类不能创建对象
13、匿名子类对象
14、interface(接口) (接口中定义的方法都是抽象的方法)
接口就是为了解决java中单继承的特性
接口不能创建对象
接口中的属性都是public static final修饰
implements(接口关键字)
接口可以多继承
15、多态(对象的多种形态)
对象向上转型,子类对象伪装成父类,父类中定义过得方法,执行子类重写后的方法
如: Animal d = new Dog();
对象向下转型 (执行子类特有的方法) Dog dog = (Dog) d;
dog.kanjia( );