这一堂课听的最多的一句话就是「这部分先了解就可以,后面到了xxx的时候会深入的讲」,就给人一种后面还有茫茫多的只是要学习一样。。。。
不过今天学的这些东西自己倒是能听懂,唯独就是后面的练习题,在各种点来点去的时候,会搞不清楚测试的顺序,创建类什么的都已经ok了,但是就是在使用调用的时候会受忙脚乱,不知道该怎么调用,或者说不知道该调用谁再调用谁,这个估计后面还得多练练才能搞清楚,脑子慢真心伤不起
在就是免费课确实没有付费课香,这么多的资料全都得自己手动敲下来,而不是像人家一样直接点开文件夹拿出报名时候给到的压缩包就好,这个还是比较不爽的。但是这段时间敲英文字的水平确实是有进步,打字快了好多,而且确实还挺快乐的。但是学会了eclipse里面的快速创建构造器、setter和getter的快捷方式的时候,瞬间感觉打字不香了。
🇺🇳 封装性——"我要用洗衣机,只需要按一下开关和洗涤模式就可以了,有必要了解洗衣机内部的结构么?有必要碰电动机么?"
一、我们程序涉及追求"高内聚,低耦合"
> 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
> 低耦合:仅对外暴露少量的方法用于使用
二、隐藏对象内部的复杂性,只对外公开简单的接口,便于外界调用,从而提高系统的可扩展性、可维护性。
通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想
三、面向对象的特征一:封装与隐藏
1、问题的引入
> 当我们创建一个类的对象以后,我们可以通过"对象.属性"的方式,对对象的属性进行赋值。
这里,赋值操作要受到属性的数据类型和存储范围的制约,除此之外,没有其他制约条件
但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件,这个限制条件就不能在属性声明时体现,
只能通过方法进行限制条件的添加(比如下面写的setLegs())
同时,我们需要避免用户再使用"对象.属性"的方式对属性进行赋值,则需要将属性声明为私有的(private)
此时,针对属性就体现了封装性
public class AnimalTest{
public static void main(String[] args){
Animal test = new Animal();
test.name = "大黄";
test.setLegs(6);
test.show();
}
}
class Animal{
String name;
private int age;
private int legs;
//对于属性的设置
public void setLegs(int l){
if(l >= 0 && l % 2 ==0){
legs = l;
}else{
legs = 0;
}
}
//对于属性的获取
public int getLegs(){
return legs;
}
public void eat(){
System.out.println("动物进食");
}
public void show(){
System.out.println("name = " + name + ",age = " + age + ",legs = " + legs);
}
}
> 属性赋值的先后顺序
> 默认初始化值
> 显式初始化
> 构造器中初始化
⬆️上面三个操作只执行一次
> 通过"对象.set方法"或者"对象.属性"的方式进行赋值
⬆️这条操作是可以反复执行的
以上操作的先后顺序: 1 - 2 - 3 - 4
public class UserTest{
public static void main(String[] args){
User u = new User();
System.out.println(u.age);
User u1 = new User(2);
u1.setAge(3);
System.out.println(u1.age);
}
}
class User{
String name;
int age;
public User(){