大四开始学java b站java人话

类是什么

  1. 类和对象的使用三部曲是
    创建
    实例化
    使用
  2. 通常每个类对应一个源程序,源程序文件名等于类名* (public修饰的类和程序同名)*
  3. java语言用class关键字来创建类
  4. 类就是一种自定义的数据类型,可以用来声明变量 (Dog是自定义数据类型 小白是dog类型的变量)
  5. java语言用new关键字来创建对象
  6. 对象可以被赋值给相应类型的变量,变量即代表该对象

主类

String[] args是字符串数组参数,cmd里运行字节码Dog.class时输入java Dog aaa,就可以把aaa作为参数传进去,args.length就会变成1
现在我们用DogShow来接收参数,第一个是狗名字,第二个是叫几声
在这里插入图片描述

每个包都是独立命名空间,一班二班两个包就是两个命名空间,里面可以有相同的类,男生女生
也就是说不同包里类能重复
在这里插入图片描述
包有隔离功能
同包的类,互相可见,可以用简单类名直接访问
不同包的类,只有public修饰的,才是可见的
访问不同包的类,必须用全限定类名
在这里插入图片描述
导包分两步,先用public修饰再import,import了另一个包同名类自己包里的就要用全限定名了

导包能把那个包里的子包一起导进来吗??
不能在这里插入图片描述默认包不推荐使用的原因是默认包没有全限定名,不能挎包

变量

在这里插入图片描述
为什么局部变量要有作用域呢?
限制有效区,名字是稀缺资源
变量是内存空间,一进方法这部分运行空间是一直保留,在方法结束才释放,内存利用率才会提高,所以局部变量的作用域不超过方法
循环变量也是局部变量(能用for就不用while,因为while会需要声明变量)

属性也是变量作用域是哪?
他的作用域是声明语句到大括号,可以覆盖该类的所有方法

既然属性会覆盖局部变量的作用域,怎么避免冲突呢?
就近原则,sum会取局部变量强龙不压地头蛇,要想访问属性sum要加上this.

在这里插入图片描述
总结一下:
1.属性,参数和局部变量,是java变量声明的三种形式
2.属性的作用范围始于声明语句,止于类的右大括号
3.不论声明在方法之前或之后,属性作用范围涵盖所有方法
4.属性与局部变量名称冲突时,局部变量优先
5.参数的作用范围涵盖方法的整个代码块
6.参数的第一次赋值发生在方法调用之时
7.只有属性有默认值,参数和局部变量都没有
8.数值类型默认0,布尔类型认false,类默认null

构造方法

用途:
1.创建实例
2.实例的初始化
全是默认值不合适,确保实例状态符合逻辑,比如一个人300岁不符合逻辑,要用到有参构造了

无参构造

在这里插入图片描述
我们知道Dog后面跟了()所以是个方法,也就是构造方法
new 和构造方法就是实例化代码,创建新对象
我们知道方法必须先声明后调用
编译器帮我们在字节码里夹带私货就是构造方法
java有个反编译javap.exe这个和javaxc.exe作用相反

构造方法与普通方法有啥差别
他没有返回类型,他会返回新创建的实例对象
方法名称和类名要一模一样

有参构造

初始化实例,添加限制条件
为了减少代码的重复量我们有两种方式解决
1.把重复代码提取成方法
比如验证年龄的我们可以弄成一个方法用this来指代该实例来调用LimitAge方法

在这里插入图片描述

在这里插入图片描述
这样一来要修改限制就只需要改一个地方了
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
2.第二种方法是构造方法互相调用,专门解决构造方法代码重复问题

挑一个最最通用的构造方法
在这里插入图片描述
把全部参数有效性代码都放到这个最最通用的构造方法
在这里插入图片描述

这个this呢看起来像方法名其实是关键字,this后面跟着()代表本类的构造方法,是种特殊的写法
这个时候性别用的固定的字面值true代表是公的
** 构造方法的调用语句必须在第一句**
这是关于面向对象编程的

总结:
1.构造方法可以用来初始化新创建的实例
2.构造方法可以用来为新创建的实例做准备工作
3.this关键字指代本实例,用来区分属性,参数和局部变量
4.重复代码容易导致bug,增加维护工作量,要尽量避免
5.可将重复代码提取为一个万法,以解决代码重复问题
6.构造万法可以互相调用,格式是this关键字加小括号
7.一个通用构造方法,可以避免构造方法中的代码重复
8.对构造方法的调用,必须是第一条语句

访问控制

访问是什么为什么要控制
还用dog类,有姓名年龄和性别,可以对该类的业务逻辑进行限制,比如年龄不超过200
我们发现调用构造语句可以很好的限制Dog的年龄,一旦AccessDemo里的语句染指了Dog
类的实例aHuang,(这个行为就叫访问,AccessDemo访问了Dog类)
他可以1.读属性2.写属性3.调用方法4.创建实例也就是读写属性调用方法
Demo代码里如何访问Dog类
它第一条语句是第一次访问调用了Dog类的构造方法创建了实例aHuang
第二条语句调用了阿黄的自我介绍方法
第三条语句第三次访问写了阿黄的属性值
第四条语句再次调用自我介绍方法
我们可以禁止AccessDemo类写Dog的属性,就可以解决了

在这里插入图片描述
把Dog类的age属性变成private(私有的不足为外人道也)
这样别的类写属性就会发现age属性不可见,但Dog类自己还是可以作,写一句this.age=300
private(私有的不足为外人道也)是最严格的,外人甚至连读属性的权利都被剥夺了
private放在方法前,自我介绍方法就是

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值