北小柒

导航

 

面向对象笔记

面向对象的思想:物以类聚,分类的思维方式 ,思考问题先把问题进行分类,对这些分类进行单独思考,然后再对某个分类下的细节进行面向过程的探索.

面向过程的思想:步骤清晰简单,第一步做什么,第二步做什么,适合处理一些较为简单的问题.

对于描述复杂的事物,为了从宏观上把我,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统.但是,对于具体到细微的操作,仍需要使用面向过程的思路去处理.

编程语言的几个发展阶段:

1.面向机器语言:每种型号的计算机都有自己独特的机器指令.

用机器语言进行程序设计是一项累人的工作,代码难以阅读和理解,一个简单的任务往往需要编写大量的代码,而且同样的任务,需要针对不同型号的计算机分别编写指令.

2.面向过程语言:如C语言.面向过程语言把代码组成称作过程或函数的块,每个块的目标是完成某个任务.例如,一个C语言的源程序就是由若干书写形式互相独立的函数组成的 .过程语言的语法更接近人们的自然语言,人们只需要按照自己的意图来编写各个函数.

3.面向对象语言:与面向过程语言相比,面向对象语言为程序执行的行为指定了一个对象,并且以对象为核心,一切围绕着对象,大概就是在完成某个任务时,首先要想到谁去完成任务,即哪个对象去完成任务,提到数据,就要想到这个数据是哪个对象的.

本质:以类的方式组织代码,以对象的组织(封装)数据.

面向对象编程的三个特性:

抽象 : 将具体实例中抽取出共同的性质形成一般的概念.

1.封装性:一个对象将自己的数据和对这些数据的操作合理,有效地封装在一起.将类隐藏在内部,只能通过该类提供的方法来实现对隐藏信息的操作和访问.可以提高程序的安全性,隐藏代码的实现细节.

高内聚,低耦合:高内聚就是类的内部数据操作细节自己完成,不允许外部干涉,低耦合:仅暴露少量的方法给外部使用.

通过 get set 方法调用private 先set 后 get set括号里面是无参, get括号里面要有对应属性.

2.继承:子类继承父类的属性和行为,,即继承父类所具有的数据和数据上的操作,同时又可以增添子类独有的数据和数据上的操作.如果父类是private则需要通过 get set方法获取,并且如果子类重写父类的方法要调用原先的方法得用super关键字去调用.子类重写父类方法后调用的是子类重写后的方法.

用extends 子类在前 父类在后,Java中只能单继承,没有多继承.

object为最大的类,最高级.默认继承.

3多态:

 

方法的定义与调用

  1. 修饰符 返回值类型 方法名 (参数){方法体 return ; }

  2. main方法,一个类里面只能有一个main方法.语句为: public static void main(String [ ] args ){} 为程序执行的入口.同时成为main主方法. void 默认返回值即return为空,这时候用return一般是为了结束方法.

  3. 修饰符 public 为公开类型可以直接访问, private为私有类型,得通过get set 方法来进行访问.

  4. 静态方法 有 static 关键字 ,非静态方法没有 static 关键字.

    1. 静态方法可以通过 类名.方法名() 进行调用,注意后面有个括号.

    2. 非静态方法要用new 实例化这个类之后在进行调用.

    3. 对象类型 对象名 = 对象值.

    4. Student student = new Student();

    5. student.say();

5.值传递和引用传递.

类与对象的关系

  1. 类是一种抽象的数据类型,它是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物.

  2. 对象就是抽象概念的具体实例.

  3. 构造器,也称构造方法,分为有参构造和无参构造.

  4. 构造器的特点: 1.方法名必须和类的名字相同; 2必须没有返回类型,同时也不能写void 因为void默认返回值,

  5. 使用new 关键字 的本质就是在调用构造器,构造器也可以用来初始化值.

  6. 定义有参构造之后默认的无参构造会被覆盖掉,如果这时候想实例化无参构造必须显示的去定义一个无参构造.

  7. 快捷键使用构造器:Alt + Insert.

    创建对象内存分析

    image-20211119104631921

    new 一个 dog 和 cat 实例化对象.

    小结:

    1. 类是一个模板:抽象,对象是一个具体的实例.

    2. 方法 定义 和 调用要熟悉.非静态方法记得实例化后调用.

    3. 引用: 引用类型和八个基本数据类型. 对象是通过引用来操作的: 栈---->堆

    4. 修饰符 属性类型 属性名 = 属性值!

    5. 对象的创建必须用new 关键字创造,构造器, Student student = new Student();

    6. 对象的属性调用: student.name;

    7. 对象的方法调用: student.add();

    8. 类:静态的属性称为属性, 动态的行为称为方法.

       

      super 和 this 的区别

     

    super注意点:

     

    1. super必须调用父类的构造方法,必须在构造方法的第一个.

    2. super必须只能在子类的方法或者构造方法中!

    3. super 和 this 不能同时调用构造方法.

区别:

  1. 代表对象不同: this标识本身调用这个对象.

  2. super 代表父类对象的应用.

  3. 前提: this 没有继承也可以使用. super 只有在继承条件中才可以使用.

  4. 构造方法: this();本类的构造 super();

重写

需要有继承关系,子类重写父类的方法!

1.方法名必须相同.

2.参数列表必须相同.

3.修饰符范围可以扩大但不能缩小. public >protected>default>private

4.抛出的异常范围可以被缩小但不能VB诶扩大;

重写,子类的方法和父类必要一致,方法体不同.

重写是因为父类的功能子类不一定需要或者满足所需功能.

注解:@override 编译时检查.

多态

 

1.多态存在的条件:

(多态是方法的多态,属性没有多态性.)

  1. 有继承关系

  2. 子类重写父类的方法

  3. 父类引用指向子类对象.

  4. new一个对象使它为父类时不能调用子类独有的方法,得强制转换其为子类才可调用.

3.注意事项: 父类和子类,有联系. 类型转换异常: ClassCastException !

并且父类转换为子类是向下转型,需要强制转换,如: ((Studetn) obj).go();

代码块

1.静态代码块 最先执行且只执行一次.

2.匿名代码块其次且每运行一次方法会执行一次,可以用来赋初值.

3.构造方法最后执行.

抽象类

  1. abstract,抽象方法,只有方法名字,没有方法的实现!

  2. 不能new这个抽象类,只能靠子类去实现它,约束!

  3. 抽象类中可以写普通方法,但抽象方法只能写在抽象类中.

  4. 抽象类的所有方法继承了它的子类,都必须要实现它的方法.

接口

  1. 声明接口的关键字是tnterface,接口的本质是契约.

  2. 接口中所有的定义其实都是抽象类的.

  3. 接口都需要有实现类,实现了接口的类,就需要重写接口中的方法.

  4. implement 可以实现多个接口,也就是多继承.

  5. 常量 public static final.

  6. 接口不能被实例化,接口中没有构造方法.

异常

1.try是监测是否有异常.
2.catch是捕捉异常,并且输出语句.
3.finally是最终执行语句,可以用来关掉键盘输入以及后面 IO 资源等需要关闭的东西.
4.e.printStackTrace ( );异常信息在程序中错误出现的位置以及原因.
5.异常处理可以使用trycatch或者在上面直接抛出异常也可以.

 

posted on 2021-11-19 17:08  北小柒  阅读(31)  评论(0)    收藏  举报