A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 庞帅 初级黑马   /  2018-4-14 23:16  /  509 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第02天 java面向对象
第1章  继承1.1  继承的概述
在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。
1.2    继承的格式&使用
在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
格式:                                       
class 子类 extends 父类{}
1.3  继承的特点
在类的继承中,需要注意一些问题,具体如下:
1、在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的。
class A{}
    classB{}
    class Cextends A,B{}  // C类不可以同时继承A类和B类
2、多个类可以继承一个父类,例如下面这种情况是允许的。
    classA{}
    class Bextends A{}
    class Cextends A{}   // 类B和类C都可以继承类A
3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。
    classA{}
    class Bextends A{}   // 类B继承类A,类B是类A的子类
    class Cextends B{}   // 类C继承类B,类C是类B的子类,同时也是类A的子类
4、在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。例如上面的这种情况中,B类是A类的子类,同时又是C类的父类
1.4  继承中成员变量的特点
    A:子类只能获取父类非私有成员
    子父类中成员变量的名字不一样直接获取父类的成员变量
     子父类中成员变量名字是一样的获取的是子类的成员变量
  
  B:就近原则:谁离我近我     就用谁
     如果有局部变量就使用局部变量
     如果没有局部变量,有子类的成员变量就使用子类的成员变量
     如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
C: super:可以获取父类的成员变量和成员方法,用法和this是相似的
1.5  继承中成员方法的特点&方法重写1.6     方法重写的应用场景&注意事项
      方法重写的应用场景:当父类的方法不能完全满足子类使用的时候,既可以保留父类的功能(沿袭、传承),还可以有自己特有的功能
    方法重写的注意事项:
                    不可以重写父类私有的成员方法,压根就看不到父类的私有成员
                     子类重写父类方法,权限必须大于等于父类方法的权限
      注解
            @Override:方法重写,说明下面的方法是重写父类的方法         
1.7    继承中构造方法的执行顺序
  A:super(实参列表);语句  在子类的构造方法中使用,用来调用父类中的构造方法(具体哪一个由传递的参数决定),并且只能在构造方法第一行使用
  B:this(实参列表); 语句 在类的构造方法中使用,用来调用本类中的其它构造方法(具体哪一个由传递的参数决定),并且只能在构造方法的第一行使用
1.8    this与super区别
this和super的区别
       this:当前对象的引用
           调用子类的成员变量
           调用子类的成员方法
           在子类的构造方法第一行调用子类其他构造方法
       super:子类对象的父类引用
           调用父类的成员变量
           调用父类的成员方法
           在子类的构造方法第一行调用父类的构造方法
1.9    继承优缺点
A:优点
提高了代码的复用性
提高了代码的可维护性
B:缺点:
类的耦合性增强了
开发的原则:高内聚低耦合
内聚:就是自己完成某件事情的能力
耦合:类与类的关系
第2章  匿名对象&final
2.1    匿名对象定义&使用
   匿名对象即无名对象,直接使用new关键字来创建对象
匿名对象:没有名字的对象
* 匿名对象的应用场景:
*     当方法只调用一次的时候可以使用匿名对象
*     可以当作参数进行传递,但是无法在传参之前做其他的事情
*  
* 注意:匿名对象可以调用成员变量并赋值,但是赋值并没有意义
2.2    final关键字
   final: 修饰符,可以用于修饰类、成员方法和成员变量
   final所修饰的类:不能被继承,不能有子类
   final所修饰的方法:不能被重写
   final所修饰的变量:是不可以修改的,是常量
第3章  抽象类3.1  抽象类概述
分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。
3.2  抽象类的特点
    抽象类的特点:
              抽象方法只能在抽象类里面
              抽象类和抽象方法必须被abstract修饰
              抽象类不能创建对象(不能实例化)
               抽象类中可以有非抽象的方法
               抽象类和类的关系也是继承
               一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类              
3.3  抽象类的成员的特点
A:抽象类的成员特点:
           成员变量
                  可以有成员变量
                  可以有常量
           成员方法
                  可以有抽象方法
                  可以有非抽象方法
           构造方法
                  可以有构造方法的,需要对抽象类的成员变量进行初始化
3.4    抽象类的细节
A:抽象类关键字abstract可以和哪些关键字共存?
1.private
私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。
2.final:
  抽象类不能和final共存,因为抽象类自身无法创建对象,我们需要通过子类创建对象,一旦抽象类使用final关键字,那么抽象类就没有子类
  抽象方法不能和final共存,因为抽象方法后期需要被子类重写,一旦加final无法重写   
3.static:
  抽象方法不能和static关键字共存,因为一旦加static我们就可以通过类名直接访问抽象方法,由于抽象方法没有方法体,没有任何意义,也不允许这样做
B:抽象类中是否可以不定义抽象方法?
是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去使用
C:抽象类是否有构造函数?
       有,抽象类的构造函数,是由子类的super语句来调用,用于给抽象类中的成员初始化

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马