博客
关于我
Java面向对象
阅读量:336 次
发布时间: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/

你可能感兴趣的文章
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
查看>>
『高级篇』docker之安全认证kubernetes命令熟悉(40)
查看>>
scala上界与下界、协变与逆变
查看>>
java稀疏数组
查看>>
springboot解决前后端交互跨域问题
查看>>
全球数字货币加快研发
查看>>
数字化助力金融科技,实现产业良性循环
查看>>
2020-11-18(失败的一天)
查看>>
2020-11-23(彻底理解KMP)
查看>>
DMB DSB ISB 简介
查看>>
常用的IDC函数
查看>>
BUUCTF 新年快乐 内涵的软件 Java逆向解密 刮开有奖
查看>>
虎符杯——虚拟机逆向
查看>>
angr学习笔记(7)(malloc地址单元符号化)
查看>>
angr学习笔记(9)(添加约束)
查看>>
angr学习笔记(13)(static_binary)
查看>>
windows环境利用start命令实现微信多开
查看>>
「CF149D」括号涂色 区间DP好题
查看>>
树状数组 模板总结
查看>>
「NOI2015」程序自动分析 并查集题解
查看>>