华清远见-重庆中心-JAVA面向对象阶段技术总结/个人总结

两种编程思想

面向过程编程POP

侧重于分析完成事情的过程。

面向对象编程OOP

所有事情交给相应的对象完成,侧重于如何创建解决问题的对象。

类和对象的关系

  • 对象是类的具体表现,类是对象的集合(模板)。
  • 先定义类,才能通过该类创建对象。

成员变量、局部变量和静态常量

成员变量

定义在类中的变量,称为成员变量,拥有默认值

局部变量

定义在方法中的变量,称为局部变量。默认有默认值,赋值后才能使用

静态常量

特殊的成员变量,用final static修饰。它有默认值。通过类名访问。

面向对象三大特性

封装

使用private关键字对属性进行修饰。再对外提供一组公开的get/set方法用于对该属性读取或赋值。 可以防止除自身类之外的地方对该属性就行访问。 这样做可以保护关键属性,隐藏类内部的实现细节。

继承

  • 类A可以通过extends关键字继承类B
  • 类A称为子类、派生类、衍生类、subClass
  • 类B称为父类、根类、超类、superClass
  • 继承后,子类可以访问父类中非私有(没有被private修饰的内容)的属性和方法。

重写Override

当子类继承父类后,可以对父类中非私有的方法进行扩展或覆盖,这个过程称为方法重写。

方法重写要求:

  • 方法名、参数列表、返回值必须和父类一致
  • 访问权限不能比父类更严格(访问修饰符的范围要么一致要么更大)
  • 不能抛出比父类更大的异常

方法重载overload

在一个类中,如果多个方法的方法名相同,参数列表不同时,这些方法称为重载的方法。

方法重写要求:

  • 方法名相同
  • 参数列表(参数类型和数量)不同
  • 与返回值无关

this和super关键字

这两个关键字,都可以当做对象使用,也可以当做构造方法使用。

当做对象使用

用法:“this.属性”或“this.方法”或“super.属性”或“super.方法” ,此时的this或super表示“当前类”或"父类对象"。

 当做构造方法使用

用法:"this([参数])或super([参数])" ,此时的this([参数])或super([参数])表示当前类或当前类的父类的某个构造方法。如果当做构造方法使用时,只能写在另一个构造方法中的第一行。

 

 Object类

是所有类的父类。任何类都间接地继承了该类,但没有明确地使用extends体现出来。所有类都可以访 问Object类中的方法,或对其进行重写。

多态

在继承关系中,子类的对象可以保存到父类的变量中。 多态通常应用于定义方法时,形参为一个父类或接口类型变量,实参可以是子类对象。

向上转型

子类对象可以直接使用父类变量保存,即多态。

向下转型

访问修饰符

 

final

用于修饰属性、方法和类

  • 修饰属性:变量变为常量,不能改变其中的值。
  • 修饰方法:方法成为最终方法,不能重写。
  • 修饰类:类成为最终类,不能被继承。

 抽象abstract

修饰方法

使用: 访问修饰符 abstract 返回值类型 方法名(参数类型 形参名称);如果一个方法的方法体无法描述,是由其子类进行重写,可以将该方法定义为抽象方法。 该抽象方法所在的类,也必须用abstract修饰,让其成为一个抽象类。

 修饰类

使用: 访问修饰符 abstract class 类名{}

  • 如果一个类中有抽象方法,这个类必须也是一个抽象类。
  • 抽象类不能被实例化(不能创建对象)。 抽象类中,可以存在非抽象方法,如getter/setter或构造方法。
  • 当抽象类的构造方法执行时,不会创建对象。
  • 当一个类不希望创建它本身对象或在它其中有抽象方法时,就将该类定义为抽象类。

接口interface

用于定义接口的关键字。代替class。

如果某个抽象类中全都是抽象方法时,可以将这个类改为接口。

  • 接口是一个完全抽象类,其中的方法都是public abstract修饰的抽象方法,没有方法体,其中的属 性都是public final static修饰的静态常量。
  • 接口中没有构造方法,不能创建对象。
  • 接口通过implements实现,实现它的类称为该接口的实现类。 一个类可以同时实现多个接口。
  • 一个类实现了接口后,必须重写其中的抽象方法。
  • JDK1.8后,可以在接口中定义default方法和static方法,该方法不用重写。

定义接口

 static

  • 如果某个属性或方法被高度重用时,可以将其定义为static静态的。
  • 这样这些属性就会脱离对象,在类加载时就加载到内存中,从而直接通过类名即可访问。
  • 或不想创建对象就想使用该类中的属性或方法时,将它们定义为静态的。

个人总结

      现在是学习JAVA的第二周,讲的是JAVA面向对象相关的知识,对于零基础的我来说学起来明显比第一周的JAVA基础吃力的多,讲的东西很抽象,本来跟着老师的的思路走听得懂,容易理解,但是一叫我们动手做作业的时候,哪里调用哪里的方法,就找不到东南西北了,思路还捋不清楚,好在下课休息的时候反复看了老师录的视频写的笔记,算是搞懂了。

        做作业的时候,本来自己知道该怎么做,但是一运行起来,总感觉和的要求有点不一样,还有些细节的东西,因为自己的马虎导致代码出现一些基础性的问题,好在自己慢慢的检查最后还是成功的排除代码的故障。

        在这一周的学习中,我学到了很多,如知道如何构造方法,属性的封装,子类的继承,还有多态的用法等等,让我受益匪浅,在接下来的时间里,我会投入更多的时间来学习,哪里没搞懂就反复看一老师录得视频和做的笔记,并且多练习老师讲的例题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值