Java基础(面对对象)

Java基础

面对对象

主要关键字

1、static调用格式:
    1)同一个类中:
        静态的: 方法名 属性名
          类名.方法名 类名.属性名
          对象名.方法名 对象名.属性名
        非静态的: 对象名.属性名 对象名.方法名

    2)不同类中:
        静态的: 对象名.方法名 对象名.属性名
                类名.方法名 类名.属性名
        非静态的: 对象名.属性名 类名.方法名
        注意:
            1、static可以修饰属性、方法、代码块,不可以修饰类和构造方法。
            2、静态方法随着类的加载而加载。
            3、在静态方法区内的东西只有一份,所有的对象共享这一份空间,只要有一个对象对属性进行修改,所有的对象调用都是修改后的数据。
            4、代码块的执行顺序:静态代码块(只被调用一次)>构造代码块{}>构造方法>普通方法(需调用)

2、this关键字
    1)可以调用属性和方法。 this.属性名(全局变量) this.方法名();
    2)在构造方法中:
        a.this();括号内的参数个数、顺序、类型根据调用的方法来决定。
        b.必须放在第一行,只能调用一次。
        c.调用构造方法时只能在构造方法中调用,调用属性和方法时可以在构造方法中可以在普通方法中。
        d.当全局变量和局部变量有重名字的时候,用this来区分。
3、super关键字
    1)super指代父类对象。
    2)super可以调用属性、方法、构造方法。
    3)super调用父类的构造方法。
    4)super调用构造方法时候必须放在第一行。

4、final最终的
    1)可以修饰全局变量,声明的时候必须赋值,只能赋值一次。
    2)可以修饰局部变量,声明时候可以不赋值,但也只能赋值一次。
    3)可以修饰方法,可以正常使用,不能被重写。
    4)可以修饰类,可以正常使用,不能被继承。
    5)用final修饰的属性通常叫常量。
    6)static final 全局变量。每个字母都要大写。
5、this和super的区别
    1)this指的是本类创建的对象。 super指代的是父类的对象
    2)this可以调用属性、方法、构造方法。 super也可以调用属性、方法、构造方法。
    3)this调用属性和方法的时候,调用自己本类的属性和方法。 如果本类没有,那就用super去父类中找
    4)this调用构造方法调用,调用本类的其他构造方法。 super调用父类的构造方法。
    5)this和super在调用构造方法的时候必须放在第一行。
    6)this和super不能同时存在

6、最小作用域最强原则: 局域变量在此方法中,比全局变量在此方法中的作用强。

传送门 csdn

类和对象

对象:
  构成:
    行为(方法)
    特性(属性)
  特点:封装,继承,多态(下面会介绍)
  创建方式:通过类实例化获得(new 类名();)
类:
  构成:
    属性:对象数据的描述
    方法:对象的行为
    构造方法:用于实例化对象
    内部类:在类中声明的类(inner class)
    块:分静态块与实例块
    类的声明:(访问权限修饰符public.default(可忽略不写,为默认))(修饰符final.abstract.synchronized)class  类名{    类体   }
    类的作用:类就是一个模板,定义多个对象共同的属性和方法     如:学生类(张三,李四) 手机类(华为.oppo)
  特点:单例,全局唯一,线程安全

面向对象的三大特征

1、封装

概念:封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
作用:提高代码的安全性
方法:
  1)将属性私有化,并提供对外界的接口(get/set方法)。
  2)用private修饰的属性和方法,只能在本类中使用。
优点:
  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员变量进行更精确的控制。
  4. 隐藏信息,实现细节。

传送门 菜鸟教程

2、继承

 作用:提高代码的复用性,减少重复代码

  1)子类可以继承父类非私有的属性和方法,不能继承构造方法和私有的属性和方法。
  2)可以综合子类的共同特征来去提炼父亲的类。
  3)子类在继承父类的各种属性和方法时,也可以有自己的属性和方法。
  4)一个子类只能有一个父类,java只能单继承,不能多继承,因为多个类中的方法名相同,方法体不同,不知使用哪个。
  5)一个类继承最顶端叫做基类或者超类,所有的超类叫做object 。
  6)在继承关系中,如果父类没有无参数的构造方法,如何解决?
       a.子类中添加一个和父类构造方法参数列表相同的构造方法,通过super参数传递给父类的构造方法
       b.如果父类允许修改的时候,可以在父类中创建一个无参的构造方法
  7)在继承关系中,代码块的执行顺序:父静(静态成员变量>静态代码块)>子静(静态成员变量>静态代码块)>父构造代码块>父构造方法>子构造代码块>子构造方法

传送门 菜鸟教程

3、多态

1)分类
    编译时多态:在编译过程中察觉的多态,重载,向上转型。
    运行时多态:在运行过程中察觉的多态,向下转型。
2)向上转型、向下转型是在继承关系中,向下转型必须在向上转型的基之上。
3)在继承关系中,父类的对象可以指向子类的实例,父类引用实体方法的时候,是调用子类重写以后的方法。
4)向上转型
    父类的引用指向子类的实体
    父类类名 对象名=new 子类类();
    优点:减少重复代码,提高代码的复用性
    缺点:父类的引用无法调用子类特有的属性和方法
    解决方案:向下转型
5)向下转型:
    子类对象的父类引用赋给子类
    子类类名 对象名=(子类类名)父类对象;
6) instanceof 判断左边的对象是否属于右边的类  对象名 instanceof 类名(子类类名)
7)匿名对象
    new 类名()  只有堆空间,没有栈空间,只能属于一次,为了节省代码。

重写(Overriding)与重载(Overloading)

  方法重载:

    指同一个类中的多个方法具有相同的名字,但这些方法具有不同的参数列表,即参数的数量或参数类型不能完全相同

  方法重写:

    存在子父类之间的,子类定义的方法与父类中的方法具有相同的方法名字,相同的参数表和相同的返回类型 
    注: (1)子类中不能重写父类中的final方法 
        (2)子类中必须重写父类中的abstract方法 
        (3)子类函数的访问修饰权限不能小于父类的
        (4)子类的异常类型要小于父类

  重写方法的规则:

    1、参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载
    2、返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载
    3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    4、重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
      例如:父类的一个方法申明了一个检查异常IOException, 在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常

  重载的规则:

    1、必须具有不同的参数列表
    2、可以有不责骂的返回类型,只要参数列表不同就可以了(类型,顺序,个数)
    3、可以有不同的访问修饰符
    4、可以抛出不同的异常

  重写与重载的区别:

    1、重写是在继承关系中;重载是在同一个类中
    2、重写是方法名、参数列表和父类相同;重载,方法名相同,参数列表不相同(个数、类型、顺序)
    3、重写返回值类型和父类相同;重载和返回值无关
    4、重写访问权限修饰符不能比父类更加严格;重载没有要求
引用

你可能感兴趣的:(java后端)