Java面向对象(下)

Java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回

一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

类的三大特性:封装、继承、多态;
封装:把复杂的逻辑隐藏起来,对外只显示一个接口。
继承:子类继承父类公开的属性和方法,这样可以减少代码量。
多态:一种事物的多种形态。

一.类的继承
  1.继承的概念
    继承用于描述事物之间的所属关系,通过集成可以使所有事物之间形成一种关系体系。
    通过extends来实现继承,其中只允许单继承,也就是说一个类只能有一个父类,可以好多各类共同拥有一个父类,也允许多重继承。
   2.重写父类方法
    (1)重写与重载
      重写:在子类当中重新定义在父类当中已经存在的方法,且重写后方法的权限不能低于父类当中的权限
      重载:在一个类中,有些许方法名相同的方法,但他们参数的个数或者类型不一样重写是两个类,重载一个类
   (2)注意
      父类当中的private修饰的方法和属性不会被子类继承到
  3.super关键字
   (1)概念
      当子类重写了父类方法时,子类无法访问父类中的方法,于是乎就有了super
   (2)作用
      用super调用父类的属性和方法
      用super调用父类的构造方法,相当于this。(super和this要写在构造方法第一行,必须是第一行)

二.final关键字
final修饰的类不能被继承,修饰的方法不能被重写,修饰的变量为常量不能被更改

 三.多态

  1.理解
    同一个行为具有多个不同表现形式或形态的能力就是多态,人两条图走路,猫四条腿走路,蜈蚣n条腿走路这就是多态,多态体现在方法的重写和重载,重载式多态,也叫编译时多态,重写式多态,也叫运行时多态狗的叫声是:汪汪汪,而猫的叫声是:喵喵喵。这就体现了不同动物shout方法的多态
  2.对象类型转换
    **抽象类和接口可以当做向上转型的引用变量类型
    (1)向上转型
       1*概念
          通过类型转换把子对象转为父类型
          如 Animal dog=new Dog();
      2*注意

          转型后只能调用子类父类共同具备的属性和方法,且属性和方法的值还是子类的。
          如有一只狗叫大黄(DaHuang)他学会了一个本领fly(),并且他还会用两条腿跑把它进行向上转型 Dog daHuang=new daHuang();现他不能fly因为父类dog中没有fly方法,但他依旧叫大黄,并且可以两条腿走,这些属性dog类都具备所以都保留了下来。
       3*Object类
        Object是所有类的父类,他有一个toString()方法,所有对象可直接调用,他用与输出
        对象的基本信息,如对象所属类的类名、和对象的地址信息,也可以对toString()
        方法重写,用于放回一些特有信息
      4*意义
        减少代码重复
*******************************有例子***********************************************

  (2)向下转型
      通过类型转换把父对象转为子类型
    1*注意事项
      向下转型的前提是父类对象指向的是子类对象(也就是说,在向下转型之前,它得先向上转型)
      向下转型只能转型为本类对象(猫是不能变成狗的)
     2*意义
      向上转型类似于一种模糊化处理,向下转型则是对模糊化的去除,找回向上转型丢失的方法

四.接口
  1.抽象类

  (1)定义
      定义一个类时通常需要定义一些方法来描述该累的行为特征,有些时候,这些方法的方式是无法确定的So就诞生了用abstract修饰的抽象类
  (2)特点
      允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象类中可以有普通的方法也可以同时都包含,也可以不包含抽象方法,抽象类不能创建对象。

  2.接口
  (1)定义
      如果一个抽象类中所有方法都是抽象的我们可以用关键字interface修饰(而不是class)使其变为一个接口

  (2)特点
      1*方法全部为抽象方法,所有方法默认用public abstract来修饰,成员变量全部默认用public static final修饰一般不在接口中定义变量
      2*由于接口中全部为抽象方法所有接口不能创建实例化对象,需要重新定义一个类并用implements关键字来实现接口中的所有方法。
      3*接口可以通过extends去继承另一个接口
      4*若一个抽象类实现某个接口只要实现接口中的部分方法就行,普通类需全部实现
      5*一个类可以implements多个接口,但只能extends一个类
      6*一个类可同时实现继承和实现接口但extends必须在implements前面
  (3)抽象类和接口的理解
      1*接口是对行为的抽象
      2*抽象类生来就是被继承的
      3*java中类是现实生活中具体事物的映射,所以抽象类是对一种事物的抽象,包括属性和方法,即对类抽象而接口却是对类局部进行的抽象即对行为的抽象,在java中继承是一个 "是不是"的关系,而 接口 的实现则是 "有没有"的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系
      4*抽象类作为很多子类的父类,可以把它认为是一种模板。而接口可以认为是一种行为规范
      5*对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。

  3.匿名内部类

未完待续

五.异常


六.包的定义与使用

猜你喜欢

转载自www.cnblogs.com/yiruo/p/9391700.html
今日推荐