面向对象进阶

1 包的来历

当有个包叫A包有一个类加C.另一个B包也有一个类叫C,当在一个项目中出现两个类的时候,该怎么分辨.这时候就要通过在他们面前加上他们的包名来区别.

2 包的命名规则

但是包名又该怎么命名呢,用域名,每一个地方的独一无二的,所以用域名来命名.一般的格式为
域名的反转+部门名称+项目名称+模块名.
而且一般用小写,中间用.分开,一般不能用驼峰命名

比如 :com.qianfeng.big1901.javalession

3 包的使用

我在B包要用A包的东西,吧A包导入进来才能使用.
导入格式 : 通过import+类的全路径名(包名+类名)

4 包的特殊地方

1 包名不能以java开头,javax开头(保护机制,只有java内部的类才能用java命名)
2.在同一个包下面的类不需要导入,在lang包下面类不需要导入可以直接使用(不如System.out.println)
3 如果要导入一个包下面的所有的类,那么可以用通配符*来导入,但是不推荐使用,造成导入的类冗余

构造器

1 构造器的创建

构造器规范: [修饰符] 类名([参数列表…]){
}

2 构造器的理解和作用

是一个特殊的方法,在使用new关键字或者创建对象时候被JVM调用,就是在new关键字的时候,他会自动调用.一般用来给一个类进行赋值.

3 构造器的注意事项

1 默认构造器

如果没有定义构造器,那么系统默认给一个无参构造器

2 覆盖默认构造器

如果自定义构造器,那么系统就不会再提供无参构造器(强制用户输入所需的属性)

3 构造器和方法比较:

构造器是没有返回值,连void也不行; 而且其名字一定要和类名一样,假如有返回值的话就是方法了,不是构造器了.

4 构造器相互调用

在构造器中调用构造器时,不能用类名,也不能用new,一定要用this关键字,并且传入已经定义好的构造器参数,并且构造器在互相调用的时候,必须把this([]),放在第一行调用.构造器不能互相调用,否则会形成死循环,当然代码也不能编译通过

6 构造器的重载

如果有多个构造器参数不一样,那么也可以称之为构造器重载

7 自己定义有参构造器要注意

如果我们定义了有参构造器,一般情况下要必须定义一个无参构造器(在框架中调用反射生成一个对象时候,默认都用无参构造器)

代码块

1 定义

在类里面,方法外面通过一对大括号来定义

2 作用

需要在一个类初始化时必须要执行的代码,就可以放在代码块.也就是这里可以写当new出一个对象的时候同时必须要干的事.例如:项目框架中使用,JDBC中连接数据库必须要注册驱动,这个驱动在代码块中执行

3 特点

1 执行时期

默认在创建对象时候执行(一般是new关键字),也就是说在new关键字的时候就执行了.每new一次就执行一次.

修饰符

public

共有的(public),对所有类可见。

default(默认)

在定义时默认的修饰符号,在同一包内可见,不使用任何修饰符,
注意:是不用任何修饰符
default int a ;
这样也是错的,直接 int a 就是默认default了

private

在同一个类中可见.实现对类的封装.一般要访问的话通过get和set函数来访问.

protected

受保护的(protected),对同一包内的类和所有子类可见
在这里插入图片描述

同级类

平级类是在第一个public类外面定义的一个类,修饰词不能用public和private因为一个类只能有一个入口除了这个限制以外,其他定义方式和常见类一样.平级类编译后的class文件名和主类是一样的.

类关键字

静态 static

static 修饰的变量的储存情况.

作用:

static定义的东西会存放在方法区,多个对象可以去使用,也就是多个对象共同使用带有static关键字的变量或者方法.会产生值的覆盖.而且使用是不用new对象,直接用类名就可以点出来使用.这便是他的方便之处.当然new对象也可以点出来但是不推荐使用.

特点:

1.静态方法是否可以调用静态方法 可以
2.静态方法是否可以调用非静态方法 不可以
3.静态方法是否可以调用静态字段 可以
4.静态方法是否可以调用非静态字段 不可以

非静态方法可以调用所有(跟上面比较)方法和属性(静态非静态)
/项目中使用:
1.常量一般用静态修饰符
2.工具类的使用,直接使用类调用方法,不用创建对象,譬如Arrays

总结:
有这么一个需求.需要实现自己的小金库,也就是自己创了一个类A,想只能自己使用,于是在A前面加了private,但是不行,java也不允许,因为,这样这个类就废了,完全封闭访问不了.但是可以在A的构造中加了private,这样在主函数中还是new不出来对象来.而这时可以在A类中写一个方法,在这个方法中new这个对象出来.并且加上static.这样就可以在main中通过static方法吧private类new出来了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值