博客
关于我
Java面向对象
阅读量:335 次
发布时间:2019-03-04

本文共 1765 字,大约阅读时间需要 5 分钟。

目录


1 java 中的对象

对象拷贝:对象赋值存在栈里就是对象拷贝,存在堆里就是引用赋值

Java 使用面向对象编程(Object-Oriented Programming,OOP),这是一种编程风格,它旨在使思考编程更接近思考现实世界。

在面向对象中,每个对象都是一个独立的单位,就像现实世界中的对象一样。

看看周围真实的世界,会发现身边有很多对象,车,猫,人等等。所有这些对象都有自己的状态和行为。

拿一只猫来举例,它的状态有:猫名、猫龄、颜色,行为有:睡觉、吃食和发出声音。

对比现实对象和软件对象,它们之间十分相似。

软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。

在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

1.1 Java 中创建对象的方式

2 Java 中的类

一个类描述对象将是什么,但是与对象本身是分开的。

换句话说,类可以描述为对象的模板,描述或定义。

您可以使用相同的类作为创建多个对象的模板。第一步是定义类,然后成为对象创建的模板。

每个类都有一个名称,每个类都用于定义属性和行为。

下面通过一个简单的类来理解Java中类的定义:

public class Cat{  String name;  int age;  String color;  void sleeping(){  }  void eating(){  }  void barking(){  }}

Java创建对象有几种方式?

java中提供了以下四种创建对象的方式:

1. new创建新对象

2. 通过反射机制

3. 采用clone机制

4. 通过序列化机制

 

4 有没有可能两个不相等的对象有相同的hashcode

有可能.在产生hash冲突时,两个不相等的对象就会有相同的 hashcode .hash冲突产生时,一般有以

下几种方式来处理:

1. 拉链法:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以

用这个单向链表进行存储.

2. 开放定址法:一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入

3. 再哈希:又叫双哈希法,有多个不同的Hash函数.当发生冲突时,使用第二个,第三个….等哈希函数计算地址,直到无冲突.

5 拷贝和浅拷贝的区别是什么?

浅拷贝:

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象.

深拷贝:

被复制对象的所有变量都含有与原来的对象相同的值.而那些引用其他对象的变量将指向被复制过的新对象.而不再是原有的那些被引用的对象.换言之.深拷贝把要复制的对象所引用的对象都复制了一遍.

6 面向对象都有哪些特性以及你对这些特性的理解

6.1 封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:将变化隔离;便于使用;提高重用性;安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。

6.2 继承

好处:
1:提高了代码的复用性。
2:让类与类之间产生了关系,提供了另一个特征,是多态的前提。
注意:
子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第
一行都有默认的语句 super();
如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过 super 语句指定要访
问的父类中的构造函数。
如果子类构造函数中用 this 来指定调用子类自己的构造函数,那么被调用的构造函数也一
样会访问父类中的构造函数。

6.3 多态

某一种事物有不同的具体的体现。
体现:父类引用或者接口的引用指向了自己的子类对象。
多态的好处:一般用于传递参数,传入父类,之后子类都可以传,提高了程序的扩展性。
多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的
方法,不可以访问子类中特有的方法。(前期不能使用后期产生的功能,即访问的局限性)
多态的前提:
1:必须要有关系,比如继承、或者实现。
2:通常会有覆盖操作。

转载地址:http://fkzr.baihongyu.com/

你可能感兴趣的文章
4-6 在Vue中使用插槽
查看>>
十二、 PHP (PDO)操作数据库
查看>>
二叉树 简单实现 问题解决
查看>>
第2章 可行性研究
查看>>
python入门——运算符
查看>>
less简介、less安装、编译、less语法之变量、嵌套、类混入、函数混入、运算、less文件导入
查看>>
【springmvc】传值的几种方式&&postman接口测试
查看>>
泳道图简介
查看>>
Tomcat6中web项目部署路径webapps和wtpwebapps的区别
查看>>
Java判断字符串是否为金额
查看>>
CodeCombat代码全记录(Python学习利器)--安息之云山峰(第四章)代码9
查看>>
nginx配置文件nginx.conf详细讲解(2)
查看>>
nginx配置文件nginx.conf详细讲解(4)--终结篇
查看>>
某公司运维岗位笔试题8
查看>>
一个简单的shell脚本:weblogic日志按天生成(日志压缩)
查看>>
skyfans之每天一个Liunx命令系列之二:uptime
查看>>
js中的文档碎片的理解与使用
查看>>
Kubernetes十三--Pod定义文件内容详解
查看>>
3、69道Spring面试题及答案
查看>>
普歌- LRF-(简单易懂)笔记本电脑USB接口案例 接口多态(向下转型)
查看>>