------------------JavaOO 上总结-------------------

面向对象:

**********************************************************************************************************

1.对象:万物皆对象,对象因关注而产生。

2. 类:是对象的抽象。

3. 属性:是对象身上的值数据。

4. 行为:是对象的功能。

**********************************************************************************************************

访问修饰符:

修饰符有4个:  private ,默认 , protcter , public。

                       本类         同包子类   同包非子类     非同包子类   非同包非子类

private                √    

默认(同包)       √                 √                  √ 

protected           √                 √                  √                       √

public                 √                 √                  √                       √

可选修饰符:

可选修饰符现在学了4个:static,abstract,final,default

static:

1.用于:类,属性,方法,初始化模块

2.效果:

static-属性:1.全类共享一个值

2.与对象无关   ------------------可以用类名加点访问,被称为类属性

3.单独存放在数据段的静态区。

4.在类加载期就产生了,划分空间。

 static-方法:1.只能调用static的属性或者方法

2.非static方法可以调static方法或者属性

3.与对象无关,和类有关  ---------------类方法

4.在类加载的时候,JVM优先加载static修饰的属性或者方法

static修饰的特点:1.与对象无关,只与类有关  (面向对象分析上)

  2.在加载期有特殊动作。

        <一般工具类的工具方法可以用static修饰>

  实例初始化块:会在产生对象的时候调用,在产生对象之后,但是在构造方法我们

写的代码之前被自动调用,它的执行时机导致他并不常用,完全可以把代码写在构

造方法里面。

静态初始化块: 1.不能操作非static属性和方法。

   2.在加载期被自动执行,且只执行一次。

  3.预加载资源的动作,就实现在静态初始化块中,项目中比较常见


abstract:

1.用处:类,接口,方法中。

        2.意义:

1>这个类不能被实例化(即不能产生对象),而且可能包含未实现的方法。

2>所有接口都是抽象的,声明接口的时候这个是可选修饰符,不写默认。

3>这个方法没有方法块,也就是主体实现部分。主体由子类书写,直接分号结束。

4>所在类也必须是抽象的。

final:

 1.用处:类,方法,变量

2.意义:

类:不能创建这个方法的子类。称为:终态类,最终类

      方法:不能被重写。

变量:值不能改变的局部变量,方法参数等等。

default:

1.用处:方法

2.意义:

这个接口的方法实现是可选的,接口为不想实现这个方法的类提供一个

默认实现。

**********************************************************************************************************

方法的重载:

定义:是在一个类中,多个方法的方法名相同,但是参数列表不同。参数列表:

指的是参数个数,参数类型,参数顺序的不同。

注意:1.重载必须通过不同的参数列表不同来进行重载。

    2.不能通过访问权限,返回类型,抛出异常来进行重载。

    3.可以有不同的访问修饰符。

方法的重写:

定义:在继承中,子类继承父类的方法。但是子类需要和父类不同的实现,扩展或者

覆盖父类的方法实现则需要对方法进行重新书写。这种则是方法的重写。重写是发生

在继承类中的。

注意:1.子类的参数列表,方法名必须和父类的参数列表方法名完全一致。

    2.返回类型必须一致。

    3.方法修饰符必须大于或者等于父类的方法修饰符。

    4.子类重写不能抛出比父类被重写方法更多的异常。

**********************************************************************************************************

继承:

定义:是类与类之间的关系,把具有相同的属性和行为进行抽取,设计为父类。子

类通过继承,就可以自动具备父类的属性和行为。

关键字:extends

优点:1.增加代码的重用性。

    2.扩展性也增加了。

    3.设计程序变得简单。

注意:1.java是单继承。(类层次更清晰,但是缺少了丰富度)

    2.Object类是所有类,包括数组的超类。

    3.继承的实现是通过内存叠加的方式实现的。(先造父类对象部分,再造子类

        对象部分)

     4.子类需要重新实现父类中的方法行为时,需要用到方法的重写。


**********************************************************************************************************

多态:

定义:相同的行为,不同的实现。             --------针对的是方法多态。

分类:静态多态,和动态多态。

类型转换:

1.向上转:把子类的对象赋给父类的变量。  (一定成功)

2.向下转:把父类的值(引用值)赋值给子类的变量。(不一定成功)

向下转:需要用到关键字   instanceof

用于判断前面的变量,是否指向后面的类型。

多态的自我理解:

即是在方法中,需要输入一个对象。但是对象具体是谁,并不知道。就需要用到

用父类定义一个 作为形参传入方法中。 如果需要具体判断是哪一个对象,就需

要用到instanceof,来调用这个对象特有的方法。如果是父类中的方法,可以直

接用父类定义的形参对象来调用需要调用的方法。

**********************************************************************************************************

this   与   super


this:

1.this.***或者this.***() 表示每个对象本身的this引用。当前对象,可以看

    本类中的所有属性和方法,可以看到继承与父类的的访问修饰符允许

    看到的

2.this()代表调用同一个类的其他构造器。

   注意:this()只能放在构造器的第一句。

super:

1.super()调用父类的指定构造,也只能放在构造器的第一句,和this()

   不能同时出现。

2.super()有默认,不会写也有(调用父类无参),this()没有默认。

3.super.****** 当前对象的父类对象,访问不到本类定义的任何属性和方法

   也可以看到继承父类的属性和方法,也受访问修饰符限制,和this相同。

   综上:super可以看到的,this也可以看到。

           this看到的 ,super就不一定看的到,所以this比较好。

**********************************************************************************************************

抽象类:

有抽象方法的类一定是抽象类。(在类的声明部分加上abstract)

特点: 

1.不能产生对象。(原因:对象是个具体的,实际存在的,不应该有不确定的。)

2.抽象类存在的意义在于产生子类。

3.抽象类里面也有属性方法等等一个类该有的都有。

4.语法上:抽象类可以没有抽象方法,但是这样就失去设计的意义。

5.抽象类可以继承于抽象类。

6.抽象类中可以重载构造方法。

注意:子类继承抽象类,必须实现抽象类中的所有抽象方法,除非这个类也是抽象类。

abstract只针对类和方法。

用法:一般用在父类中,所有子类共有的,都要重写的,就一般写为抽象方法,自然父

    类就是抽象类了。

   在代码中:  @overriding 可以进行标注提醒。

接口:

特点:1.是一种独立的数据类型。

    2.接口关注的是行为的共享(接口不能产生对象)

1> 定义

1.关键字:interface

2.接口在语法上访问修饰符只有public和default(默认)

属性:只能是公共,静态,常量属性(三个都得满足)

    就算不写public statc final,默认也算常量。

构造:接口无构造方法。

方法:接口里面定义的方法只能是公共的,抽象的方法。

    public abstract 可以省略不写。

没有实例初始化块,也没有静态初始化块。

公共借口的名字必须和他所在的Java文件名保持一致。

注意:在jdk1.8中,接口有了新的功能,也就是能写方法实现部分。用default修饰。

        eg:  public default void methodA(){

xxxxxxxxxxxxxxxxxxxxx

}

2>实现

1.让类实现接口。

用关键字implements +接口名字

特点:1.实现接口的类必须实现接口的所有方法,除非这个类是抽象类。

    2.一个类可以实现多个接口,在implements后面写多个接口的名字,用

逗号隔开。

    3.类在实现接口的同时,可以做继承。

3>接口与接口的继承

1.接口的继承依然使用extends 关键字。

子接口自动继承父接口的抽象方法。

2.接口的继承是可以多继承的。

extends 后面书写需要继承的接口名字,用逗号隔开。

3. 接口的引用可以指向实现类的对象。

行为的分类原则(指行为应该写到父类中,还是接口中):

1、对象与生俱来的行为写到抽象类中。

2、附加的行为写到接口中。

接口设计的原则是:

最小接口原则。

尽量小接口, 这样可以自由组合,防止接口污染。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值