Java学习第九天

如何创建类\如何抽象类:
分析系统里相关的对象,把具有相同属性或行为的对象归为一类
相关概念:
1、类:具有相同属性或行为的事物的统称
2、对象:一个地址  在这地址里存放着对象所属类里的成员
3、类里的成员:属性、方法
4、构造方法:无返回值(没有void) 和 类同名
5、构造方法的作用:new时调用,分配内存空间,完成属性的初始化
6、方法重载:在同一个类中,同名不同参(参数的个数、类型不同)
             与返回值类型无关
7、重载的作用:同一类功能只需要一个方法名即可,方便记忆和调用
               调用时,根据参数的不同来系统来决定调用哪一个
8、方法的参数是基本类型和引用类型的区别:
   基本类型8种、引用类型无数种:系统类
                               自定义类
                              【说明】数组也是引用类型,不管数组里的元素是什么类型
   基本类型传参时,把实参的值复制一份,传递给形参,形参值的改变不影响实参
   引用类型传参时,把实参的地址复制了一份给形参,形参和实参对应着同一个地址,既然是同一个地址
                           所以说形参通过地址改变值,实参也跟着改变
9、变量的分类:
   局部变量:声明在方法或方法中的语句块内部的变量  
            生命周期:调用方法时,在内存中出现,调用方法结束后,在内存中就消失
   成员变量:创建对象后,就在内存中存在,当对象消失时,
           在Java中,程序员new出的对象,不需要程序员来清空内存,Java有自动垃圾回收机制

面向对象: OOA (面向对象分析)         OOD (面向对象设计)             OOP(面向对象编程)
面向对象的三大特性:封装、继承、多态
封装:保证属性的安全性
实现需要三步:1、属性私有
                            2、封装队形属性的getXXX和setXXX方法
                            3、在setXXX方法中,进行有效验证


员工管理系统:

设计:
1、发现类
2、发现类的属性
3、发现类的方法
4、优化(封装、继承、多态)
封装、保证数据的合理,对年龄的封装
发现问题:两个类中有大量重复的代码(编写了重复代码)
                    如果程序扩展:增加Ceo类,还得重复编码
如何解决重复编码的问题:
使用继承来解决重复编码问题
继承:描述的是类之间的一种关系,通过这种关系,子类可以访问父类中可以访问的成员,从而减少了重复代码的编写。
把范围较大的类称为父类,里面存放各个子类共同的成员,范围较小的类称为子类

继承是类和类之间的一种关系
继承的实现步骤:
1、把各个相关类的共同成员(属性)抽取出来,放在一个类中,这个类就是父类
2、让相关类继承这个父类,继承的语法
       子类  extends 父类

private -私有                            声明在哪个类里,就在哪个类里可用
无                默认                           在同一个包内都可以使用
protected-受保护的               在子类中可以访问

【重要】子类继承了父类中的那些成员
1、子类和父类在同一个包里,子类继承了父类的 public修饰的、默认的、protected受保护的
2、子类和父类不在同一个包里,子类继承了父类的public、protected

总结:
1、 private 修饰的成员变量只能在本类内部可以访问,其余均不可以访问
2、默认的访问修饰符,包内可见,同一个包内的类都能访问默认成员
3、protected修饰的成员,在同一包内,无论是否是继承关系,均能访问,不在同一包内,只有子类可以访问
4、public修饰的成员,项目内可见,只要在同一项目内,都能访问到


继承的优点:
1、代码复用
2、代码结构更清晰

继承的特点:
1、单继承 ,父类只能有一个 , 不能同时继承多个类
2、传递性 , 在子类的父类的同时,父类的父类也继承了下来
当创建一个类后,这个类会默认继承Object类,在语法上隐式继承

继承的本质:
问题:创建子类的对象后,为什么坏能访问父类里的成员?
在创建子类对象之前先创建父类对象,并且在子类对象中保存了父类对象的地址

调用子类构造方法时,子类的构造方法会默认调用父类无参的构造方法

在子类的构造方法中,来指定调用哪一个父类的构造方法
在子类的构造方法中,通过super();来指定调用父类的哪一个构造方法
【注意】调用父类构造方法的语句,一定是子类构造方法中的第一条有效语句

debug  断点调试
1、在需要调试的代码处,设置断点
      双击设置断点
2、以debug方式运行
3、如果想调试/运行方法内部的代码,按F5
      如果不想进入方法内容,按F6

猜你喜欢

转载自blog.csdn.net/bii_yu/article/details/78128015