• 1-Java基础回顾整理_07_面向对象


    1、面向过程与面向对象

      面向过程思想:1)执行步骤清晰明了,第一步,第二步。。。  (是线性的)

             2)主要用来处理一些比较单单的问题;

      面向对象思想:1)物以类聚,是一个分类的思维模式,会首先思考解决问题需要哪些分类,然后对这些分类进行单独的思考,最后才对某个分类下的细节进行面向过程的思想;

             2)适合处理复杂的问题,以及一些需要多人协作的问题;

      总结:

        客观上使用面向对象的思路,微观执行上使用面向过程的思路来处理;

    2、面向对象的本质

      以类的方式组织代码,以对象的组织来(封装)数据

      核心思路:就是抽象

      面向对象三大特性:封装:暴露的东西越少,代码复用性就越高,接口也会更加的适用

               继承:比如儿子继承父亲,父亲有的东西儿子都会有

               多态:比如同样是一个人,不同的人有不同的收获,特点不同,就是多态

    3、面向对象与类的关系

      1)从认识代码角度看:是先有的对象后有的类,对象是具体的事物,类是抽象的,类是对对象的抽象

      2)从代码运行角度看:是先有类后有对象,类是对象的模板

    4、break与return

      break作用:跳出switch循环,结束循环;

      return作用:方法的结束,返回值;

    5、方法回顾

      当类里面的方法声明中含有static关键字,那么这个方法不能被其他没有static关键字修饰的方法调用,因为有了staitc关键字,那么这个方法就是和类一起创建的,比没有static关键字的普通方法出现的要早,普通方法是和对象有关的,当类对象实例化之后才存在;

    6、值传递与引用传递

      值传递:就是方法的形参,当没有返回值的时候,对调用方法的原原参数不会产生影响;

      引用传递:传递的是对象,如果更改了对象里面的属性值,那么就会对该对象产生影响

    7、this关键字指的是当前的这个对象

    8、类与对象的关系

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

      2)对象是抽象概念的具体实例,它能体现出特点,展示的功能是具体的实例,而不是一个抽象的概念;(万物皆对象)

      类对象实例化之后会返回一个自己的对象,如:Student对象就是一个Student类的具体实例,同一个类可以产生不同的对象,但是它们拥有共同的特性

        如:Student stu1 = new Student();

          Student stu2 = new Student();  stu1 与 stu2 就是两个对象,但是他们的特性相同

    9、对象的创建与初始化

      当使用new关键字创建对象时,此时java会给对象分配内容空间,还会给创建好的对象进行默认的初始化,以及对该类中构造器的调用

      构造器:

        构造器即为构造方法,在创建的对象的时候必须进行调用;

        注:1)构造方法名必须与类名相同;2)必须无返回值,且不能写void

      构造类型:

        构造分为无参构造和有参构造(全参构造、部分参构造)

        注:当方法中只有无参构造的时候,系统会默认进行创建,此时可省略

          若方法中有有参构造,那么则需要加上无参构造,避免在创建对象的时候发生错误

    10、Java程序在运行的时候,首先会加载一些程序所要运行的模板

      面向对象三大特征:封装、继承、多态

    11、封装:

      见名知意,就是把一个东西(对象)装起来,只留一下一个小口子,与外界进行交流

      当方法中的属性私有(private)的时候,就要使用get/set来达到方法私有属性操作的目的;

      意义:

        1)安全性提高;

        2)隐藏了代码的细节;

        3)统一了接口;

        4)系统的可维护性增强;

    12、继承

      本质就是对某一批类的抽象,从而实现对现实世界更好的建模

      注:1)Java中的类只有单继承,没有多继承

        2)父类方法中的私有属性,子类无法继承

        3)子类调用父类的无惨构造时,super()一定要写在最前面,

        4)super只能出现在子类的方法或者构造方法中

        5)super()和this()不能同时使用。

      比较:

        this()本类的构造方法    super()父类的构造方法

    13、方法的重写

      当继承发生的时候,就会涉及到方法的重写,重写与重载不相同,重写是方法的重新编写,和属性无关

      注:

        1)方法名必须相同

        2)参数列表必须相同

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

        4)抛出的异常:范围可以被缩小,但是不能扩大,classNotFoundException(小) -> Exception(大)

      为什么重写:

        父类的方法功能,子类不一定需要,或者不一定满足自己的需求;

    14、多态

      本质可以理解为一句话:父类引用指向子类对象,如:Service service = new ServiceImpl();

      同一方法可以根据发送对象的不同而采用多种不同的行为方式;

      当含有static关键字的区别:

        静态方法的调用只和左边定义的数据类型有关;

        非静态方法的调用:就是对父类发的重写

      注意:

        1)多态是方法的多态,不是属性的多态,属性没有多态;

        2)父类和子类有一定的联系,进行类型转换可能会出现类型类型转换异常:ClassCastException;

        3)存在条件:继承关系,方法需要重写,父类引用指向子类对象;

          下列情况不能重写:

            1、static方法,它属于类,不属于实例

            2、final修饰的常量

            3、private修饰的方法

    15、instanceof,类型判断

      1)用来判断一个对象是什么类型

        如:Student stu = new Student();

          System.out.println(stu instanceof Student);

      2)可以用来判断打印语句能不能编译通过,若能通过,则存在父子关系,若不能通过,则不存在父子关系;

    16、引用类型转换(与基本数据类型转换类似)

      低转高,自然转换,如:Person person = new Student();

      高转低,强制类型转换,需要在对象前加括号,里面写上要转换的类对象,Student stu = (Student) person;

      注意:

        子类转换为父类时,可以回丢失一些自己本来的一些方法,也就是父类引用指向子类对象,所以通常会方法实现接口方法重写;

    17、导入静态包

      java.lang包下的类,当我们调用的时候,需要写类名.方法名()来调用,如果我们想直接调用方法,不想写类名的时候,由于lang包下的类里面的方法都是static关键字修饰的,所以需要导入对应的包方法;  如:import static java.lang.Math.random;

    18、类与接口

      类是单继承的,接口可以多继承(其实是通过实现多个接口侧面验证接口可以多继承)

    19、抽象类:

      1)抽象类不能使用new关键字来创建对象,只能靠子类去实现,它是一种约束;

      2)抽象类中可以写普通的方法

      3)抽象方法必须在抽象类中,即:若方法中有abstract关键字,那么类的声明中也必须有abstract关键字;

      注意:

        抽象类既然不能通过new关键字创建对象,那么它的方法中是不存在构造器的;

        抽象类存在的意义:提高开发效率

    20、接口

      接口是一种规范,定义的是一组规则,它的本质就好比契约,制定好后大家共同遵守,它自己无法写方法,是一种专业的约束,它实现了约束和实现的分离:面向接口编程;

        普通类中,只有具体的方法实现;

        抽象类中,有具体的实现和规范(抽象方法),两者都有,只是不能new

      OO(面向对象)的精髓:是对对象的抽象,最能体现这一点的就是接口。所以为什么当我们讨论设计模式的时候,只针对具有抽象能力的语言(如:java、C++、C#),就是因为设计模式研究的实际就是如何合理的去抽象;

    21、接口的实现

      通过implements 关键字来实现接口,实现了接口的类,那么就要重写几口中的所有方法;

      注意:  可以实现多个接口(侧面验证了接口可以多继承)

      作用:

        1)接口中的方法,都是public abstract修饰的

        2)接口中的常量,都是public static final 修饰的,但不建议在接口中进行使用(在平时要锻炼自己的抽象思维,通过接口来定义一个系统,架构师不是梦)

        3)它是一种约束

        4)定义的一些方法,去让不同的人去实现

        5)接口不能被实例化,也就是不能new,因为接口中没有构造方法

        6)通过implements关键字可以实现多个接口,但必须要重写接口中所有方法

    22、内部类

      常用的是匿名内部类

      

  • 相关阅读:
    c学习第6天
    c学习第5天
    c学习第4天
    c学习第1天
    20171009/20171010/20171011
    20171010
    20171008
    20171007
    20171006
    matrix
  • 原文地址:https://www.cnblogs.com/hand-blog/p/13113493.html
Copyright © 2020-2023  润新知