Java面向对象基础知识汇总

 

OOP:Orient Object Programe

AOP:Aspect Orient Programe

封装:Encapsulation   

继承:Inheritance     

多态:Polymorphmism   

实例:Instance

数据特征:Data specialty 就是属性 :Attribute/property

行为特征:Action specialty 就是方法 :method

默认构造(系统会自动生成)和非默认构造器

(会覆盖默认构造器,所以需要进行手动添加默认构造器)

构造器的返回参数为隐藏,必须和类名一直,方法也可以与类同名,但会产警告;

静态不能调用动态的属性和方法;

1.基本类型做参数时,传递的是值,

  引用类型做参数时,传递的是地址(句柄),

  除了:String Byte Short Integer Long Float Double Boolean 传递的是原来的副本的句柄

2.封装:Encapsulation,属性私有,方法公有

  继承:Inheritance: 继承父类的部分属性和方法;(单继承只能继承一个父类)

  多态:Polymorphism:

    构造器不能继承

 Object 方法: clone():克隆/拷贝

           equals():判断两个对象的值是否相等

           notify():唤醒当前休眠的线程

           notufyAll()唤醒所有的线程

           getClass():返回当前对象的运行时类

           toString():返回一个字符串

           finalize():垃圾回收之前,必须要走的方法

           hashCode():返回hash code 码

           wait:让当前进程等待,阻塞

子类继承,父类派生

对象之间,类型强转,必须要求有继承关系;

super()调用父类构造器;

组合:Composite  UML实心菱形 统一生存期

聚合:Aggregation UML空心菱形 非相同生存期

1.方法重载

    方法重载OverLoad

    在同一个类中,同时存在一个以上的同名函数,

    参数个数类型不同,或者顺序不同,称为方法的重载

    与方法的返回类型无关,为方法的修饰符也无关;

    当我们需要去用某个方法时,只需要把参数其个方法之中,JDK会根据具体的类型方法调用,而不需要我们另外调用其他名称的方法,

2.构造器重载,所以每个类可以有多个构造器;(一个默认构造器)

   构造器之间可以相互调用,利用的是this()关键字,调用本身的构造器;

    (1)构造器是一个与类名同名的特殊方法;

    (2)构造器的返回类型为隐藏类型,并不是说没有返回类型;

    (3)每个类可以有一个或者多个构造器

    (4)每个构造器可以有0个或者多个参数

    (5)构造器总是伴随着new的操作符一起使用;   

 子类要调用默认构造器时,需要先取调用父类的默认构造器,并不是非默认构造器;

 调用子类非默认构造时,也会先调用父类的默认构造器,并不是费默认构造器;

3.this关键字

this是指自己本身的意思,即表示当前对象

    this的使用方法:(this关键字不可能出现在main方法中)

        (1)调用本身构造器

        (2)调用本身的属性和方法

        (3)返回当前对象 即return this;

4.super关键字

    指向父类,

    super的使用方法:

        (1)访问父类中的属性和方法(public)

         (2) 子类构造器中没调用父类构造器; super();

    注意:在Java中没有super.super();

    当子类继承父类的方法后,并重写了其方法,如果想调用父类的构造器,则需要用super关键字

5.初始化块

    {

         .....

     }

    在构造器之前执行,每当实例化一个对象时,会执行初始化块;

    static{

          ....

    }

    静态初始化块

    在类加载时执行,而且只执行一次,和类是否实例化无关;

注意:

     在Java中的代码执行顺序:

    (1) 父类静态初始化块 --> (2)自身静态化块 --> (3)父类初始化块 -->(4)父类默认构造器-->(5)自身初始化块 --> (6) 自身默认构造器;

6.方法重写(Override)

    子类继承父类时,如果父类的方法满足不了,子类的需求,则需要改写,称为重写或者覆盖;

    具有相同的方法名、参数、返回类型,

    修饰符必须要比父类的权限要低;

注意:重载和重写的比较:

    (1)重载在同一个类中发生,而重写则是子类和父类之间发生,没有继承关系,没有重写

    (2)重载是指参数的类型,个数和顺序不同,重写必须要求是有相同的方法名,参数,和类型,顺序也要一致;

    (3)重载与返回类型无关,而重写返回类型不能改变

4)重载与修饰符无关,而重写与修饰符有关,子类重写的方法的权限不能比父类的权限严格;

7.package:包,对所编写的代码进行分层分类,便于开发和管理

8.import 导入所需的类

    常用包: java.lang --- 包含一些Java语言的核心类:Object,

        String,Math,Integer,System,Thread提供常用功能,自动导入,无需  import;

         java.awt (GUI)

         java.applet

         java.net 网络编程;

         java.io  流

         java.util 常用工具类;

9.修饰符

    在Eclipse中,private为正方形,default为三角形,protected为菱形,public为原型

    private:只有自身可见,他人不可见

    default: 在同一个包中的类可见,

    protected: 继承关系的情况下,才能跨包,否则不存在跨包;

    public:公有的,全可见

10.static关键字

    修饰变量,方法和内部类,所修饰的这些东西,存储在静态内存区;

    这些东西属于类,而不是单独的属于某个对象,即直接用类调用即可

    在类加载的时候,就已经生成在静态内存区了;

    static 不能修饰构造器;

       静态初始化块!!!

11.final关键字

    所修饰的类不能被继承,

    所修饰的方法不能被重写,

    所修饰的变量不能被改变

12.抽象类

    含有抽象的方法的类必须为抽象类

    抽象方法:有方法的定义,并没有方法实体,因为会根据子类的具体要求而实现

    子类继承父类如果为抽象类,如果子类不为抽象类,则不需全部实现父类抽象方法

    如果子类为抽象类,则可以不去实现父类的抽象类

    而且每个类继承一个抽象类;

    并且抽象类不能被实例化,但是抽象类含有构造器(默认和非默认都存在);

13.接口

    接口中所用的方法都是抽象的;

    接口中的所有方法都是公共的;

    接口中的变量都是常量,不允许被修改;

注意:接口和抽象类之间的区别;

    接口中的方法全是抽象的,而且是公共的,而抽象类中可以有一般方法,并且访问作用域可以是四种修饰符

    接口中没有普通变量,都是常量,而抽象类中含有变量和常量

    类和接口的是implements关系,而抽象类的关系是extends

    类可以使实现多个接口,而类只能继承一个抽象类

    接口可以为多继承,抽象类只能有一个父类;

14.多态

    父类做参数,就增强了参数的灵活性

    虚方法调用 父类指向子类

15.关键字instanceof

    A instanceof B

        判断 A 是否 是 B的对象吗

        判断 A 是否 是 B的子类吗

16.匿名内部类
     方便使用类,相当于一次性的产品,在使用完毕后,就及时垃圾回收,减少开销,但是只是适用于少次使用当前类而已;
17.枚举类
     (1)枚举对象实现多个接口,默认继承java.lang.Enum
     (2)构造器为私有,枚举类不能实例化
原文地址:https://www.cnblogs.com/fkrcode/p/6073375.html