Java语言学习(六):面向对象进阶

    上篇博客中我们初步认识了Java面向对象编程,下面进一步学习下。

    面向对象编程三大特性:封装、继承、多态。

    封装隐藏了类的内部实现机制,对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。

    继承是面向对象程序设计的基本特性之一,其基本语法为:

public class A extends B {}

    表示类A继承了类B,其中:类A称为子类、派生类或孩子类,类B称为超类、基类或父类。

    重写是只能应用在方法上,其注解为@Override,方法的重写只能发生在存在继承关系的类中,需要注意:重写方法与原来方法签名要相同,即方法名称和参数要相同,包括顺序。

    抽象类中可以定义抽象方法,使用abstract修饰,也可以定义普通方法,包含抽象方法的类必须是抽象类,而抽象类不是必须包含抽象方法。对于抽象方法来说,仅定义一个声明即可,即抽象方法无方法体。抽象类的简单声明为:

pubic abstract class A {}

抽象方法的简单声明为:

public abstract int getA();//无方法体

    注意:抽象类是不能直接实例化的,如果要获得该类的实例可以使用静态方法创建其实现类对象。

    多态是面向对象程序设计的基本特性之一,Java的多态主要是通过重写父类(或接口)中的方法来实现的,好处是可以屏蔽对象之间的差异,从而增强了软件的扩展性和重用性。

    下面通过一个实例来说明下上面所说的特性:

    (1)任务:通过实例进一步熟悉封装、继承、重写、抽象、多态等的使用

    (2)准备工作:了解封装、继承、重写、抽象、多态

    (3)编程:

    定义父类Car:

public abstract class Car {
   public abstract String getInfo();
}

    定义子类BMW,继承类Car:

public class BMW extends Car{
   //重写父类的方法
   @Override
   public String getInfo() {
      return "BMW";
   }
}

    定义子类Benz,继承类Car:

public class Benz extends Car{
   //重写父类的方法
   @Override
   public String getInfo() {
      return "Benz";
   }
}

    定义类CarFactory,并定义静态方法,通过指定车型创建对象(简单工厂模式的应用):

public class CarFactory {
   public static Car getCar(String name){
      if(name.equalsIgnoreCase("BMW"))
          return new BMW();
      else if(name.equalsIgnoreCase("Benz"))
          return new Benz();
      else
          return null;
   }
}

    定义测试类TestCar:

public class TestCar {
   public static void main(String[] args) {
       Car bmwCar = CarFactory.getCar("BMW");
       System.out.println("车型为:"+bmwCar.getInfo());
       Car benzCar = CarFactory.getCar("Benz");
       System.out.println("车型为:"+benzCar.getInfo());
   }
}

    (4)运行:输出相应对象信息

    上面的实例应用到了工厂模式,也有其他的一些模式,比如:策略模式、适配器模式等,这里不做阐述了,自行学习下吧。

    在类中,除了可以定义域、方法和块,还可以定义类,这种类称为内部类,其简单的声明语法为:

public class Outter{
   class Inner{}
}

    内部类可以使用外部类中定义的属性和方法,即使为私有的。它可以分为普通内部类、局部内部类(将类定义在方法的内部)、匿名内部类、静态内部类(使用static修饰的内部类),具体的使用不做详述了。

    在Java中,调用类的方法有两种方式:对于静态方法可直接使用类名调用,对于非静态方法必须使用类的对象调用。

    当然,还有很多需要注意的地方,这里不做补充了,大家在编程中遇到时注意就好了。

猜你喜欢

转载自my.oschina.net/u/3747963/blog/1855775