java基础——面向对象

“一树一菩提,一‘门’一世界。”一切皆对象,万物有三问:我是谁?我从哪里来?我到哪里去?

一、面向对象

OOP是什么?
	OOP就是面向对象。
	面向对象的三大特征:封装、继承、多态

面向对象思维,以对象模型为核心,丰富模型的内涵,扩展模型的外延,通过模型的行为组合去共同解决某一个问题,抽象能力显得尤为重要
封装是一种对象功能内聚的表现形式,使模块之间耦合度变低。更加具有维护性;
继承使子类能够继承父类,获得父类的部分属性和行为,使模型更有复用性
多态使模块在复用性基础上更加有扩展性、使系统运行更有想象空间

1.java深浅拷贝:

浅拷贝只复制当前对象的所有基本数据类型,以及相应的引用变量,但没有复制引用变量指向的实际对象。
深拷贝:在成功clone一个对象之后,此对象与母对象在任何引用路径上不存在共享的实例对象,但是引用路径递归越深,则越接近JVM底层对象,会发现彻底深拷贝实现难度越大,因为JVM底层对象可能是完全共享的。
简单来说:
浅拷贝:Object的clone()方法来拷贝对象
深拷贝:覆盖重写clone()方法来实现引用对象

二、类

类的定义由于访问级别、类型、类名、是否抽象、是否静态、泛型标识、继承或实现关键字、父类或接口名称等组成。类的访问级别有public和无访问控制符,类型分为class、interface、enum。

java语言中类的继承采用的是单继承方式。
为了避免像C/C++语言中多继承而产生的继承泛滥、菱形继承、循环继承

内部类:
在这里插入图片描述

静态内部类: 如 static class StaticInnerClass{};
成员内部类: 如:private class InstanceInnerClass{};
局部内部类,定义在方法或者表达式内部;
匿名内部类,如:(new Thread(){}).start()
无论是什么类型的内部类,都会编译成一个独立的 .class文件

定义包内可见静态内部类:

(1)作用域不会扩散到包外
(2)可以通过“外部类” “内部类”的方式直接访问
(3)内部类可以访问外部类中所有的静态属性和方法
Node的父类Entry是Map的静态内部类

三、访问权限控制

面向对象的核心思想之一就是封装。
访问权限控制符任何地方
publicOK
protectedNO
NO
privateNO
访问权限控制符包外子类
publicOK
protectedOK
NO
privateNO
访问权限控制符包内
publicOK
protectedOK
OK
privateNO
访问权限控制符类内
publicOK
protectedOK
OK
privateOK

public:可以修饰外部类、属性、方法,表示公开的、无限制的,是访问限制最松的一级,被其修饰的类、属性和方法不仅可以被包内访问,还可以跨类,跨包访问,甚至允许跨工程访问
protected:只能修饰属性和方法,表示受保护的、有限制的,被其修饰的属性和方法被包内及子类访问,但不能被子类对象直接访问。
private:只能修饰属性、方法、内部类。

访问控制级别总结:

如果不允许外部直接new创建对象,构造方法必须是private
工具类不允许有public或default构造方法
类非static成员变量并且与子类共享,必须是protected
类非static成员变量并且仅在本类使用,必须private
类static成员变量如果仅在本类使用,必须是private
若是static成员变量,必须考虑是否为final
类成员方法只供内部调用,必须是private
类成员方法只对继承类公开,那么限制为protected

四、this与super

对象实例化,至少有一条从本类出发抵达Object的通路

this和super省略情况:

  • 本类方法调用本类属性
  • 本类方法调用另一个本类方法
  • 子类构造方法隐含调用super()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值