Java“面向对象”特性的个人理解

类和对象的对比:

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等

封装的优点:

  1. 隐藏类的实现细节
  2. 让使用者只能同只能通过事先定好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
  3. 便于修改,增强代码的可维护性

继承 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的子类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值