您的位置:首页 > 科技 > IT业 > seowhy什么意思_java开发工具哪个好用_全国疫情排行榜_网站建设价格

seowhy什么意思_java开发工具哪个好用_全国疫情排行榜_网站建设价格

2024/12/23 10:46:48 来源:https://blog.csdn.net/weixin_43735161/article/details/143420742  浏览:    关键词:seowhy什么意思_java开发工具哪个好用_全国疫情排行榜_网站建设价格
seowhy什么意思_java开发工具哪个好用_全国疫情排行榜_网站建设价格

终于到Java面向对象了,是非常重要的一方面,但囿于时间关系,尽可能简单的记录我不会的东西

Java的值传递、引用传递?

Java基础类型是值传递,数组和对象是引用传递(数组也是一种对象)

创建一个对象的过程,各方面内容存储在哪里?

如图所示代码,下图是一个对象的生成过程
在这里插入图片描述
在main函数里是栈区,存放着对象的引用(地址),另外对象真正的存储地点在堆区,而方法区存放着静态方法、方法(函数)、常量(如对象里的字符串常量)等等,结构如下:
在这里插入图片描述

super()构造

构造函数先调用父类的构造函数(且这个必须在第一行执行),再进行子类构造
不能同时调用super()和this()进行构造

修饰符Public/Protected/Default/Private区别

Public

所有包都可以访问该内容(成员变量、方法)

Protected

只能被同一个包和子类继承

Default

只能被同一个包的访问

Private

只能在本类内访问

总结
访问修饰符类内部当前包子类其他包
public
protected×
default××
private×××

继承相关

这个文章写的很好,关于各个修饰符的:
https://www.cnblogs.com/jobyterry/p/15731685.html
总之

public允许所有访问
protected和public不同之处在于限制了外部访问
default不同之处在于继承后无法通过this访问
private和default不同不在于继承,而是该类可否被同一包内其他类访问

构造方法

构造方法因为和类名相同,谈不上继承,只是隐式或显式的调用

public

包内包外都可继承,任何地方都可以实例化(new)

protected

包内包外都可继承,包内可以实例化(即new) , 包外子类不能实例化(即new)

default

包内可以继承,包内可以实例化, 包外不可实例化

private

不可以被继承,不可以被实例化(即new)

静态方法/变量

静态方法无法被子类重写,算两个不同的方法,向上转型后,调用父类的方法,如

//A extends B
A a = new A();
B b = new A();

此时B b向上转型,还是调用B的静态方法
下面介绍重写相关内容

重写

属性没有重写一说
@Override可以帮助检查错误
重写时方法名和参数列表都相同

A extends B
A a=new A();
B b=new A();

没有static时,b调用的是对象的方法,而b是用A类new的
即b是A new出来的对象,因此调用了A的方法
有static时,b调用了B类的方法,因为b是用b类定义的
因为静态方法是类的方法,而非静态是对象的方法
总结:
静态方法是类的,就算重写,左边声明的谁的就调用的谁的
非静态方法是对象的,重写后,右边new的谁的就用谁的

重写时
修饰符范围可以扩大,不可以缩小
异常范围可以缩小,不能扩大

父类调用子类独有的方法无法调用,只能强制类型转换,向下转型
A extends B
b.Amethod() //报错
//除非:
((A) b).Amethod()

instanceof

x instanceof Y
即判断对象x指向的实际类型是不是Y的子类型

类的静态方法无法调用非静态方法

匿名代码块

匿名代码块{}在类里面写,用于初始化对象的时候加载
匿名静态代码块static{}在类里面写,用于初始化类的时候加载
执行顺序:
(第一次初始化类的对象)匿名静态代码块→
(第一次初始化对象)匿名代码块→构造函数→
(第二次初始化对象)匿名代码块→构造函数→……

静态导入包

import static java.lang.random;
就可以直接用random()这个函数

抽象类

抽象类不能初始化对象,所以只能被继承使用
抽象类的一般功能和普通类相同
抽象方法只能在抽象类种定义
抽象类的抽象方法必须在子类中被继承,除非子类是抽象类
抽象类继承有缺陷:只能单继承

接口

接口可以多继承
接口里面无法定义实现,里面的方法默认都是public abstract的
接口命名大写首字母+驼峰
实现的类命名:接口名+“Impl”
接口里面的都是常量,但一般不会放
接口不能被实例化,且没有构造方法

内部类

普通内部类 成员类
静态内部类 静态成员类
同文件其他类 该文件下面的其他类
局部内部类 方法里面定义的类
匿名内部类 无名字只有实现的类

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com