java的类与对象

《概念》

类就是一大类概念:比如人,猫,笔等很广泛的概念

对象就是一大类中单独的个体:比如 次林梦叶作为人是个单独的个体 

《类与对象在JVM中的内存机制与创建过程》

 

 上面就如同c++一样

《关于成员方法》

 

 访问修饰符可以用来控制方法的使用范围

返回数据类型:

当要返回多个数据时应该怎么办?

在java中方法的返回值甚至可以是数组:如 

public int [] getArr(){},当要返回多个数据时只要将数据存放到数组中返回即可

《底部传参机制》

 结论:

 

 《重载》

 

 关于printIn,会发现他可以打印各种不同的数据类型,原因如下:我只在文档中截取了一部分:

 

 

 会发现很多方法其都叫做printIn,只是他们的传参不同而已

《注意点》

 

 

 如果返回类型不同,其他均相同也不构成重载

如  public int sum(int a.int b){}

public void sum (int a,int b){} 这两个方法是不构成重载的

《可变参数》

 

 如下图中就是可变参数的作用,可变参数本质上就是个数组:

 

 所以我们传参数还可以直接传数组:

 《注意点》

 《全局变量与局部变量》

 

 

 

 

 

 《构造器》

 

 

 

 写法如下:

 《构造器的调用顺序》

构造器调用顺序是在加载完普通变量与方法之后调用

 《this的引出》

上面代码有一个挺烦的地方就是:

在构造器中的传参总要写与类中的属性不同的名字,如果不写:

 结果:

 

 这个是因为当变量名字相同区分不开时,开始就近原则;

这里相当于传过来的参数,自己给自己付了一遍值

没有影响到类的属性,其还是默认值;

为了解决这个问题:

 

《this的使用》

img

其中访问构造器的语法还是有点意思:

img

 《this在构造器中的使用》

 

 答案:c,d;

 

 

《包》

 

 《创建方法》

 

 

 

 然后在com这个软件包下就有了itsname的软件包;

 

 《日后学习深入理解包》

在记事本中我有如下代码,并且命名为A.java

 

 然后我执行如下DOS命令:

 

 生成如下:

 

 然后我执行:

 

 这个是因为在打包后其真实的类名为a.b.x.App

 

 这个是因为计算机真的会去找a目录下的b目录下的x目录下的App.class

但是直接javac A.java会使生成的class文件直接在,这个当前的目录下

 

 正确的做法是:

 

 “.”表示当前目录,-d .表示将class文件放在指定的文件中

 

 如果没有这个文件,则生成,则有如下效果:

 

 

 

《访问修饰符》

 

 

 

外部类为什么不能使用protected、private修饰:

1.不能用private:

对于一个外部类,用private修饰是没有意义的。因为如果使用private修饰外部类,其它类就不能访问的这个类,那么这个类就不能创建实例,这个类的属性和方法就不能被外界访问,所以没有意义。

2.不能用protected:

protected是用来修饰类中的属性和方法的,不是用来修饰类的。假如定义一个A类用protected修饰,再在与A类不同包的另一个保重定义一个B类,B类如果要继承A类,前提是B类能够访问到A类。仔细想想就会发现这是冲突的。(你要成为A类的子类,你的先访问到A类,但你要访问到A类,那你先得成为A类的子类。因为protected修饰的类就是给子类访问的)这个逻辑明显是冲突的。

所以不仅是外部类,普通类也不能用protected修饰。

这时肯定有人会说:把B类放在A类同一个包下,那B类不就可以访问到A类了吗?

但是:如果你把B类放在和A类同一个包下,那和用default修饰A类有什么区别,既然和default没有区别,那干嘛还要用protected修饰A类,而且protected本身可以跳出同一个包访问的意义也不存在了,所以用protected修饰类是没有意义的。

《日后学习的改进》

来观察一下protected这个修饰符,其最大的给与权限是:不同包下的子类可以访问

我有两个类:

 

 

 可以看到当我用PowerTest02去继承PowerTest01的时候,我在PowerTest02中写了个PowerTest01对象

其访问自己上的属性num居然会报错,这是因为这依然要遵守跨包访问的准则:

因为PowerTest01不是PowerTest01的子类,只能访问外包中public类的public成员

而PowerTest02是PowerTest01的子类可以正常访问num

posted @ 2022-07-09 23:46  次林梦叶  阅读(93)  评论(0)    收藏  举报