面向对象重点知识

1.什么是对象?

-对象是具体的,实际的,代表一个具体事物, 即 是实例

-一个对象根据需要是可以拆分出多个子对象

-对象之间存在联系:

对象调用(方法调用)

继承(父子联系)

发送指令(请求)

对象的组成:

-属性:对象的属性是实体的相关状态特性,它用于对对象进行操作

-方法:方法是对对象所具有的功能,它是对对象功能的描述

2.什么是类?

  • 类是一个概念级的概念

  • 类是相同或相近对象的总称

  • 类的组成

  • 属性:属性是该类对象所拥有的属性

  • 方法:方法是该类对象所拥有的方法

  • 面向对象语言中,对象通过类在生成

  • 面向对象语言中,类是组织代码的基础

  • Java中通过类创建对象的方式:

  • 1.使用new关键字创建类的对象 new Student();

  • 2.通过类的字节码对象创建类的对象(实例),使用反射创建

Java内存的结构分析:

1 .栈: 一般存放基本数据类型(局部变量)

  1. 堆: 存放对象(Cat cat , 数组等)

  2. 方法区:常量池(常量,比如字符串), 类加载信息

Java 创建对象的流程简单分析

        Person p = new Person();
​
        p.name = “jack”; p.age = 10

1先加载 Person 类信息(属性和方法信息, 只会加载一次)

  1. 在堆中分配空间, 进行默认初始化(看规则)

  2. 把地址赋给 p , p 就指向对象

  3. 进行指定初始化, 比如 p.name

3.类与对象的关系?

.类是相同或相近对象的抽象

-在编程中对象是由类创建的

4.什么是封装及封装的好处和用法?

封装指将数据隐藏,通过相关对外的操作方法实现对数据的获取及修改

封装的步骤

属性私有化(private)

针对这些私有属性提供对外的操作方法

在这些操作方法中对属性的操作进行限制

-封装的好处:

-1.对外隐藏属性或实现细节,保护数据的安全性

-2.封装后的数据传递更加便利

5.1构造方法

-构造方法用于创建类的对象时,当我们需要创建一个类的对象时必须调用该类的构造方法

-在任何类中都存在一个默认的构造方法,默认不显示定义

-public Preson(){}//默认方法

-构造方法是一个特殊的方法(没有返回值)

-方法名必须和类名一致

-构造方法通过new关键字调用

-构造方法的调用是显式调用

5.什么继承、继承的好处、继承使用?

什么是继承?

-子类可以直接继承父类的非私有属性和方法

-私有属性子类依然可以继承,但不能直接使用。

继承构造方法的使用

-子类中调用父亲的构造方法需要使用super()调用

super关键字的作用?

-在子类中使用,表示父类的一个对象引用

-可以通过super关键字调用父类的属性和方法super.xxx或super.xxx();

-通过super(。。。)调用父类的构造方法

-super关键字只能表示直接父类不能表示间接父类

继承的好处

1.通过继承可以简化子类的开发,达到代码复用的效果
2.提高类之间的结构性
3.通过继承可以实现多态

6.什么是方法重载,为什么使用方法重载?

    - 方法重载(OverLoad)
    - 方法重载指在一个类中,多个方法之间,方法名相同,参数列表不同
    参数列表不同含以下几种不同:
        - 参数的类型不同
        - 参数的数量不同
        - 参数的顺序不同
  - 方法重载与方法的返回值无关
​
  - 为什么使用方法重载(方法重载的好处)?
    - 方法名复用,让调用者使用更加便捷,符合现实
    - 在调用时JVM会根据方法名和自参数自动在重载的方法中查找对应的方法并调用
  
     - 方法重载会不会提高效率?
    - 方法重载不会提高效率,由于方法重载需要JVM再同名的方法中搜索,所以效率会有所下降

7.什么是方法重写,为什么使用方法重写?

  • 方法重写(Override)

    • 方法重写存在于子父类之间,由子类中的一个方法重写父类中某个方法 - 方法重写的规则: 1.子父类之间,子类的方法重写父类的方法 2.子父类中的两个方法的声明部分必须一模一样(除方法的访问权限修饰符)

    • 子类中方法的权限修饰符不能小于父类的方法 3.方法体不能一样 - 方法重写的意义(目的):

    • 子类重新定义父类中某个功能具体实现规则 - Java中为了强制重写父类中的方法,提供了一个"注解"@Override 当在一个方法声明处使用了该注解后,则该方法必须要重写父类中的某个方法 - Java中默认一个方法的方法名与父类中某个方法名一致,则表示该方法要重写父类的方法 如果没有重写则编译失败.

    8.在继承中多态的使用? 
  • 使用多态的目的在于提高系统灵活度(可维护性、可扩展性)

    • 在继承中继承同一个类的子类之间形成多态,不同的子类可以根据自己 的特点完成同一件事(方法)

    • 多态的实现:

      • 声明的类型为父类类型,在使用时传入子类对象,此时能够调用到的方法 是父类中声明的方法,但执行时执行的是子类重写后的方法

    9.为什么使用抽象类、抽象类的使用?

抽象方法是没有方法体的方法,它是一个残缺的方法,残缺的方法不能被调用
 - 抽象方法不能在普通类中声明,抽象方法只能在抽象类中声明
 - 当在一个类中使用了abstract关键字声明后,则该类就成了一个抽象类
 - 抽象类中可以存在抽象方法,但抽象方法是残缺的方法不能被调用,所以抽象类不能被实例化
 - 抽象类不能被直接实例化(不能创建对象),但可以通过子类对象间接创建父类对象
 - 抽象类是否有构造方法?(有)
 - 抽象类的用途:
   - 抽象类主要用于规范子类的行为,抽象类是作为父类存在
 - 当一个类继承了一个抽象类后,子类必须重写父类中的抽象方法
 - 如果一个类继承了一个抽象类,不想重写父类中的抽象方法,则该类也要声明为抽象的
 - 抽象类中可以存在抽象方法,也可以不存在任何抽象方法,当一个类不想被创建实例时我们就可以将该类声明为抽象类

10.什么是接口、接口的好处及使用?

接口是特殊的抽象类;

接口中的方法都是抽象方法(JDK1.8以前),JDK1.8以后(含1.8)以后允许接口中存在带有实现体的方法。

JDK1.8以后允许接口有以下方法:

1.默认方法:在方法的声明处加上default修饰符,默认方法允许带有方法体

2.静态方法:在方法的声明处加上static修饰符,默认方法允许带有方法体

-JDK1.8以后引入了“函数接口”的概念

-在接口中有且只有一个抽象方法(是函数式接口,函数式接口不关心default方法和静态方法,只要只存在一个抽象方法即可)

java中为了强制定义函数式接口引入一个注解:@FunctionInterFace

为什么会出现函数式接口?

目的:使用lambda表达式,让lambda表达式使用更加方便

lambda表达式的作用是简化匿名内部类的书写

简化内部类的编写

使用接口的目的:

-规范实现类的行为,规定实现类中必须重写的方法

-为了让系统更加灵活,提高系统的可维护性和拓展性

当一个类实现一个接口后,则必须重写接口中所有的抽象方法,如果不想重写,则该类要声明为抽象类。

Java中的类使用的是单继承机制,一个类只能存在一个直接父类。

Java中的接口使用的是多继承机制,一个接口可以继承多个接口(接口不能继承类)

Java中一个类可以同时继承一个父类并实现多个接口

11.在接口中多态的使用?

  - 使用多态的目的在于提高系统灵活度(可维护性、可扩展性)
  - 在接口中实现同一个接口的实现类之间形成多态,不同的实现类可以根据自己的特点完成同一件事(方法)
  - 多态的实现:
    - 声明的类型为接口类型,在使用时传入实现类对象,此时能够调用到的方法
      是接口中声明的方法,但执行时执行的是实现类重写后的方法

12.this 关键字

 - this关键字的使用位置?
    this关键字只能在类中使用,而且除了静态内容(静态属性、静态方法、静态代码块)之前的任意位置都可以使用该关键字
    this关键字可以在属性中使用,可以在方法中使用,可以在构造方法中使用,可以在初始化代码中使用
  - this关键字表示什么?
    this关键字在类的内部使用,表示当前类的一个对象引用
    this关键字表示当前类的对象,但该对象与调用者有关
    this关键字虽然在类的内部使用,但this关键字表示调用者对象
  - this关键字与super关键字的区别?
    this和super都是在类中使用的,可以在非静态的任何位置使用
    this在类的内部,表示调用者对象
    super在类的内部,表示当前类的父类对象
    this(...)调用本类的构造方法
    super(...)调用父类的构造方法

13.==和equls的区别:

==用于判断两个对象是否为同一个对象

==针对基本类型,表示两个数据的值是否相等

equals在基本类型中不能使用

equals在对象类型中表示两个对象中的属性值是否相等

字符串使用equals来判断是否相等

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值