类和对象的对比:
1-现实世界都是由很多对象组成的,基于对象的共同特征抽象出类。对象:是类的一个实例(现实中的一个具体例子),有状态和行为。类:类是一个模板,是一个类别,它是描述这一类对象具有的行为动作(方法)和特征状态(属性变量)。
例如,
一个水杯是一个对象,
状态有:容积,颜色、材质、重量。行为有:装入水,倒出水。
—条狗是一个对象,
状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
面向对象
//封装=数据+加对数据的操作
//继承=包含(并使用)上级
//多态 = 对象类型或方法实现的不同表现形式
封装
封装就是将属性私有化,提供公有的方法访问私有的属性。
实现封装的步骤:
(1)修改属性的可见性来限制对属性的访问。
(2)为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。
(3)在赋值和取值方法中,加入对属性的存取限制。
**为了实现良好的封装性,我们通常将类的成员变量声明为private,再通过
public的方法来对这个变量进行访问。对一个变量的操作,一般都有读取和赋值操作,我们分别定义两个方法来实现这两种操作,一个是getXxx()(Xxx表示要访问的成员变量的名字),用来读取这个成员变量操作,另外一个是setXXX()
实体类命名后缀:Entity Bean Model Pojo VO
实体类:创建对象+存放数据、
实体类: 用于 封装(事务)对象所定义的类
实体类封装的组成部分:
1-私有的属性变量:首字母必须小写。(变量名长度至少为3个字符,除id)
2-公有的属性方法:getter/ setter
3-构造方法:方法名与所在类名一致,无返回类型;
类中若无任何构造方法,则可使用无参默认构造方法,格式: new构造方法(...);否则仅能使用所定义的构造方法。
4-直接操作属性的方法:如toString/equals等
封装的优点:
- 隐藏类的实现细节
- 让使用者只能同只能通过事先定好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
- 便于修改,增强代码的可维护性
继承 extends
子类 :子类又叫派生类
父类:又叫基类 超类 上级类
继承概念:子类继承父类的特征和行为,使子类对象具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为
继承(is-a)
本质:包含并可使用所继承类中可访问的内容
默认:直接继承extends object(Object是所有类的基类/超类)
继承类型
java不支持多继承
方法重写
重写可以简单理解为:子类中存在一个父类中定义结构相同的方法。
若对象所调用的子类中方法已重写则调用子类中重写的方法,否则调用父类中的方法
Override
public String toString(){
return “asdfgh”
}
ps:
@Override 可以不加
@verride加上的话必须是重写方法
方法的重写规则
- 参数列表必须完全与被重写方法的相同;
- 返回类型必须完全与被重写方法的返回类型相同;
- 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
- 父类的成员方法只能被它的子类重写。
- 声明为final的方法不能被重写。
- 声明为static的方法不能被重写,但是能够被再次声明。
- 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。·重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
- 构造方法不能被重写。
- 如果不能继承一个方法,则不能重写这个方法。
Object中的方法
- toString 方法
- equals 方法
- native:调用本地操作系统中的方法
- .clone();//克隆(拷贝)(深拷贝/浅拷贝)
- .getclass();//获取类的描述,反射
多线程
- .notify();
- .notifyAll();
- .wait();
- .wait(timeout);
- .wait(timeout, nanos );
- final/finally
- .finalize();//不推荐使用
在GC(垃圾自动回收机制)准备释放对象所占用的内存空间之前,将首先调用finalize()方法。
子类实例时:必须先实例化父类再实例化子类
向上转型(自动)
向上转型:下级对象赋值给上级变量。
赋值条件: 存在上下级关系
调用规则:仅能调用变量类型的方法(和变量)如:Animal dog=new Dog(); 只能调用 Animal的方法 和变量
*****若调用的是重写方法,则调用子类中该重写方法******
Dog 是 Animal的 子类
向上转型 实例:
Animal dog=new Dog();
List<String> list=new ArrayList<>();
向下转型
public void a5() {
Animal a = new Animal();
Animal c = new Dog();//向上转型
int t0 = 100;
long t1 = t0;
int t2 = (int) t1;
Dog e =(Dog) c;//向下转型-强制类型转换
e.move( );
e.b( );
lDog f = (Dog) a;//向下转型-classCastException异常
insctanceof()方法:通过返回一个布尔值来指出,某个对象是否是某个特定类或者是该特定类的子类的一个实例。
a .instanceof (b) 判断:a是不是b的子类