java笔记

本文深入探讨了Java的基础概念,包括类、对象、封装、继承、多态等关键特性,并介绍了构造器、静态成员、接口、内部类等高级主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java采用的指针模型可以消除重写内存和损坏数据的可能性。
java编译器通过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。

oop 数据放在第一位,然后再考虑操作数据的算法。
传统的结构化程序 算法放在第一位,数据结构第二位
封装(有时称为数据隐藏)将数据和行为组合在一个包中

对象的三个主要特性:

①行为 —— 可以对对象施加哪些方法
②状态 —— 施加方法时,对象如何响应
③标示 —— 如何辨别具有相同行为和状态的不同对象

————————————————

this

this对象可以在类里面引用这个类的属性和方法

类与类的关系

①依赖 如淘宝的 order对象 和 account对象 有依赖关系,而 item对象 和 account对象 没有依赖关系;(耦合度 应尽可能降低耦合度)

②聚合 如淘宝的 order对象 包含一些 item对象;

③继承

——————————————————

对象和对象变量

Data deadline;定义了一个对象变量,但是它不是一个对象,只是初始化后可以引用Date类型的对象。

要使用对象就要先构造对象,用构造器(名字应和类名相同)构造新实例。
对象变量并没有实际包含一个对象,而仅仅引用一个对象。

———————————————————
p107

实例域

主力类(workhorse class)
通常这些类没有main方法,但有自己的实例域和实例方法;
将实例域标记为关键字 private 确保只有类自身的方法能够访问该实例域;
若需要返回一个可变对象的引用,应该首先对它进行clone;
可以将实例域定义为final,构造对象时必须初始化这样的域,之后的操作不能够再修改。

一个私有的数据域;
一个公有的域访问器方法;
一个公有的域更改器方法。

——————————————————

静态
静态域(static)

每个类中只有一个这样的域
区别于实例域,它属于类,不属于任何独立的对象。


静态方法

没有隐式的参数(没有this参数的方法)
不能访问实例域,但可以访问静态域。

如Math.pow(x,a)

——————————————————


对象构造

构造器

构造器总是伴随着 new 操作符的执行被调用;
不能对一个已经存在的对象调用构造器。
构造器与类同名。
构造器可以有n个参数。
构造器没有返回值。
类通常包括类型属于某个类类型的实例域。


重载

如果多个方法有相同的名字,不同的参数,便产生了重载。
方法的签名:方法名以及参数类型

————————————————

值调用&引用调用

java中对象引用进行的是值传递
①一个方法不能修改一个基本数据类型的参数(数值型和布尔型)
②一个方法可以改变一个对象参数的状态
③一个方法不能让对象参数引用一个新的对象

————————————————

继承

子类不能直接访问超类的私有域;要借助于公有的接口;

super和this不是类似的概念。super不是对象的引用,不能赋给另一个对象变量。只是一个指示编译器调用超类方法的特殊关键字。
super 可以 -调用超类的方法;调用超类的构造器。

子类数组的引用可以转换成超类数组的引用,而不需要采用强制类型转换。

用final阻止继承类和方法


四个访问修饰符

private 仅对本类可见
public 对所有类可见
protected 对本包和所有子类可见
(默认) 对本包可见


多态P158

一个对象变量可以指示多种实际类型的现象被称为多态,运行时能自动选择调用哪个方法的现象称为动态绑定(虚拟机提取实际类型方法表–搜索方法签名的类 –调用)。


类型转换

子类的引用赋给超类变量,编译器是允许的。
超类的引用赋给一个子类变量,需要类型转换。

在类型转换前 应先查看能否成功转换。(instanceof)


抽象类

包含一个或多个抽象方法的类本身必须被声明为抽象的。
抽象类不能实例化(不能出那个键这个类的对象);
但可以定义抽象类的 对象变量,它只能引用非抽象子类的对象。


object

object 类型的变量可以引用任何类型的对象(但只是持有者,要操作还是要类型转换)。

toString
返回表示对象值的字符串;


泛型数组列表

ArrayList
采用类型参数的泛型类(generic class)
实现动态数组

——————————————————

接口

以契约的形式提供功能;
接口不是类,而是对类的一组需求描述,使用接口是为了确保类实现某些特定方法。
接口中不能包含实例域或静态方法,但可以包含常量。
和抽象类相比较,抽象类每个类只能扩展于一个类,但每个类可以实现多个接口。
一个实现接口的类必须实现接口内所描述的所有方法,否则就要声明为抽象类

内部类

意义
①完善多继承;
②实现事件驱动系统;
③闭包(内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。)

可以对同一个包中的其他类隐藏起来

正如,方法可以引用调用这个方法的对象数据域。内部类可以访问自身数据域也可以访问创建它的–外围类对象的数据域。

在外围类的作用域之外,引用内部类:
outerClass.InnerClass

局部类

不能用public /private访问说明符进行声明。

作用域限定在声明这个局部类的块。(对外部世界完全隐藏)
局部类的方法只能引用定义为final的局部变量。

静态内部类

作用:当不需要内部类引用外围类对象时。取消产生的引用。

除了没有对生成它的外围类对象的引用特权外,与其他所有内部类一样。


回调P228

回调(callback)指出特定时间发生时应该采取的动作。

当父类和实现的接口出现同名函数,回调可以帮助使父类的函数不被覆盖。


对象克隆

Object类中的一个protected方法;
默认实现是浅拷贝;

——————————————————

异常

——————————————————

参考书籍
①corejava

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值