美文网首页
面向对象

面向对象

作者: 一如既往wfqwfq | 来源:发表于2019-10-05 22:25 被阅读0次

1、面向对象三大特征

  • 封装:将对象的状态信息隐藏在对象内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对内部信息的操作和访问。
  • 继承:把子类共有的属性和行为抽象到父类,在由子类继承父类。这样就拥有了父类的行为和属性,可实现代码的复用和多态。
  • 多态:java引用变量有两种类型:编译时类型和运行时类型。编译时类由声明变量的类型决定,运行时类型由实际赋给盖变量的类型决定。引用类型由运行时实际赋给的类型去决定,可以实现同样的引用类型调用同样的方法,却有不同的效果,这就是多态。(或者说把子类类型赋给父类引用)

2、访问权限修饰符

image.png

3、方法重写

方法重写发生在子类与父类间,子类重写父类的方法,但是不可重写构造器。
重写规范:两同、两小、一大

  • 两同:方法名相同,参数相同
  • 两小:抛出的异常小于等于父类抛出的异常,返回类型小于等于父类返回类型
  • 一大:访问权限大于父类访问权限

4、方法重载

方法重载发生在同一个类种,指具有相同方法名,不同参数列表的方法。返回类型可相同也可不同,但是不可以返回类型作为方法重载的判断。因为调用方法时无法确定要调用哪个方法。方法重载抛出的异常可以不同。

5、为什么要重写equals方法

所有类都是直接或间接继承于Object类的,Object类中的equals方法实际上就是==,比较的是地址,这与我们实际使用情况不符合。实际情况下,我们可能希望两个对象实例的属性值相同,就判断为对象相同,所以要重写equals方法。

6、为什么重写equals方法还要重写hashcode()方法

java中有这么个规范:两个对象相等,hashcode一定相等。两个对象的hashcode相等,它们不一定相等。
在使用hash存储的数据结构时(hashmap,set),可能造成错误。两个相等的对象都存储到一个hashmap中去了。

7、java是值传递还是引用传递

值传递。对于基本数据类型变量,就把该变量的值传递过去。对于引用类型变量,就把该引用的地址传递过去(不把整个引用指向的值传过去)。

8、String对象会创建几个对象

String a = "abc";
创建一个对象,在字符串常量池中
String a = new String("abc")
创建一个或两个对象,堆中肯定会创建"abc"对象,若常量池中已经存在"abc"对象,则不在创建,不存在,则创建。
String a = "abc" + "def"
创建一个对象,编译期会被优化为"abcder"

9、String、StringBuilder、StringBuffer区别

  • String:不可变字符串
  • StringBuilder:可变字符串,线程不安全
  • StringBuffer:可变字符串,线程安全,synchronize修饰

10、String + 拼接原理

String a = "abc" + "def"
创建一个对象,编译期会被优化为"abcder"

String a = "abc";
String b = a + "def";

变量b的拼接中包含其他变量,编译期无法确定,运行时调用StringBuilder拼接,生成的对象在堆中。

11、String.intern()

jdk1.7中,调用String.intern()方法。如果常量池中存在字符串,则不做操作。如果不存在,在把该字符串堆中的引用赋给常量池中的对象。

12、抽象类与接口的区别

不同:

  • 抽象类可以有构造器,接口没有构造器
  • 抽象类可以有普通方法和具体方法,接口没有具体方法(jdk1.8后可以有静态方法,并有方法体)
  • 抽象类可以有普通成员变量,接口只有常量
  • 抽象类成员修饰符有public、protected、默认、private,接口只能是public
    相同:
  • 都不能被实例化
  • 都可以作为引用类型

相关文章

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

  • JavaScript面向对象核心知识归纳

    面向对象 概念 面向对象就是使用对象。面向对象开发就是使用对象开发。 面向过程就是用过程的方式进行开发。面向对象是...

  • 面向对象(未完成)

    面向对象 标签(空格分隔): 面向对象 第一章:面向对象(上) 什么叫面向对象 面向过程、面向对象、两者区别 构造...

  • 面向对象:创建对象&继承

    博客内容:什么是面向对象为什么要面向对象面向对象编程的特性和原则理解对象属性创建对象继承 什么是面向对象 面向对象...

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

  • 面向对象的三大基本特征和五大设计原则

    1、面向对象概念 1.1、理解面向对象 面向对象是相对面向过程而言; 面向对象和面向过程都是一种思想; 面向过程:...

网友评论

      本文标题:面向对象

      本文链接:https://www.haomeiwen.com/subject/rhlbuctx.html