数组:
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器;
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式 数据类型[] 数组名 = new 数据类型[数组的长度];
int[] arr = new int[5];
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组定义格式 数据类型[] 数组名 = new 数据类型[数组的长度];
int[] arr = new int[5];
栈(掌握):
存储局部变量
堆(掌握):
存储new出来的数组或对象
存储局部变量
堆(掌握):
存储new出来的数组或对象
//在内存中,凡是出现new的地方,所有的东西无论是数组还是对象都存放在堆中。
使用匿名对象可以像流水线一样作业,生成同样的内存。
面向对象(封装的概述):
A:封装概述
* 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
B:封装好处
* 隐藏实现细节,提供公共的访问方式
* 提高了代码的复用性
* 提高安全性。
C:封装原则
* 将不需要对外提供的内容都隐藏起来。(成员变量是需要隐藏的)
* 把属性隐藏,提供公共方法对其访问。
private仅仅是封装的一种体现形式,不能说封装就是私有
this关键字特点:
代表当前对象的引用、
this的应用场景
用来区分成员变量和局部变量重名;
构造方法:
1. 没有返回值,连void也没有
2. 方法名和类名是相同的,前面有访问修饰符public
3. 创建对象时自动执行构造方法(构造方法是不需要调用的)
作用:对类中的属性值进行初始化操作
* 注意:加入在类中没有提供任何类型的构造方法,系统回默认的提供一个无参数的构造方法,
* 而如果在类中提供两了一个构造方法,系统就不会默认提供无参数的构造方法
1. 没有返回值,连void也没有
2. 方法名和类名是相同的,前面有访问修饰符public
3. 创建对象时自动执行构造方法(构造方法是不需要调用的)
作用:对类中的属性值进行初始化操作
* 注意:加入在类中没有提供任何类型的构造方法,系统回默认的提供一个无参数的构造方法,
* 而如果在类中提供两了一个构造方法,系统就不会默认提供无参数的构造方法
共性用静态,特性用非静态!!
静态的只能访问静态的。静态方法只能调用静态的方法和成员变量
非静态的可以访问静态的,也可以访问非静态的。
非静态的可以访问静态的,也可以访问非静态的。
继承:
* A:继承的好处
* a:提高了代码的复用性
* b:提高了代码的维护性
* c:让类与类之间产生了关系,是多态的前提
* B:继承的弊端
* 类的耦合性增强了。
* 开发的原则:高内聚,低耦合。
* 耦合:类与类的关系
* 内聚:就是自己完成某件事情的能力
继承特点:
Java只支持单继承,不支持多继承;
* Java中类的继承特点
* 如果想用这个体系的所有功能用最底层的类创建对象
* 如果想看这个体系的共性功能,看最顶层的类
* a:提高了代码的复用性
* b:提高了代码的维护性
* c:让类与类之间产生了关系,是多态的前提
* B:继承的弊端
* 类的耦合性增强了。
* 开发的原则:高内聚,低耦合。
* 耦合:类与类的关系
* 内聚:就是自己完成某件事情的能力
继承特点:
Java只支持单继承,不支持多继承;
* Java中类的继承特点
* 如果想用这个体系的所有功能用最底层的类创建对象
* 如果想看这个体系的共性功能,看最顶层的类
* A:this和super都代表什么
* this:代表当前对象的引用,谁来调用我,我就代表谁
* super:代表当前对象父类的引用
* B:this和super的使用区别
* a:调用成员变量
* this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
* super.成员变量 调用父类的成员变量
* b:调用构造方法
* this(...) 调用本类的构造方法
* super(...) 调用父类的构造方法
* c:调用成员方法
* this.成员方法 调用本类的成员方法,也可以调用父类的方法
* super.成员方法 调用父类的成员方法
当父类中没有空参数的构造方法时,我们可以使用super解决;
* A:final关键字概述
* B:final修饰特点
* 修饰类,类不能被继承
* 修饰变量,变量就变成了常量,只能被赋值一次
* 修饰方法,方法不能被重写
* 修饰类,类不能被继承
* 修饰变量,变量就变成了常量,只能被赋值一次
* 修饰方法,方法不能被重写
* A:多态(polymorphic)概述
* 事物存在的多种形态
* B:多态的前提
* a:要有继承关系
* b:要有方法重写。
* c:要有父类引用指向子类对象
* 事物存在的多种形态
* B:多态的前提
* a:要有继承关系
* b:要有方法重写。
* c:要有父类引用指向子类对象
* A:抽象类的成员特点
* a: 成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?
* 不能修饰成员变量
* b:构造方法:有
* 用于子类访问父类数据的初始化。
* c: 成员方法:既可以是抽象的(子类直接重写父类的抽象方法),
* 也可以是非抽象的非抽象的子类直接继承就可以使用。
* a: 成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?
* 不能修饰成员变量
* b:构造方法:有
* 用于子类访问父类数据的初始化。
* c: 成员方法:既可以是抽象的(子类直接重写父类的抽象方法),
* 也可以是非抽象的非抽象的子类直接继承就可以使用。
抽象类的特点
*a:抽象类和抽象方法必须有abstract 关键字修饰
* abstract class 类名{}
* public abstract void eat();
* b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者接口
* c:抽象类不能被实例化,那么抽象类如何实例化呢?
* 按多态的方式,由具体的子类实例化,其实这也是多态的一种,抽象类多态。
* d: 抽象类的子类
* 要么是抽象类
* 要么重写抽象类中的所有抽象方法
抽象类和接口
1. 抽象类和接口的区别
a. 方法和变量的区别
2. 什么时候用接口,什么适合用抽象类