java基础知识-继承

来源:互联网 发布:数控车宏程序编程入门 编辑:程序博客网 时间:2024/05/20 19:49
/*
* 继承的概念:
继承就是从已有的类(父类)产生一个新的子类,子类通过继承自动拥有父类的
非私有的属性和方法,继承是实现类的重用、软件复用的重要手段。
*/
/*
* abstract修饰的类称为抽象类,抽象类的特点:
不能实例化对象;
类中可以定义抽象方法(abstract修饰的方法);
抽象类中可以没有抽象方法
*/

/*
* abstract修饰的方法称为抽象方法,抽象方法只有方法的声明没有方法实现,
* 即没有方法体。包含抽象方法的类本身必须被声明为抽象的。
*/
//子类继承抽象类必须实现抽象类中所有的抽象方法,否则子类也必须定义为抽象类。
/**
* 如果从一个抽象类继承,而且想生成新类型的一个对象,
* 就必须为基础类中的所有抽象方法提供方法定义。
* 如果不这样做(完全可以选择不做),则衍生类也会是抽象的,
* 而且编译器会强迫我们用abstract关键字标志那个类的“抽象”本质。
* 即使不包括任何abstract方法,亦可将一个类声明成“抽象类”。如果一个类没必要
* 拥有任何抽象方法,而且我们想禁止那个类的所有实例,这种能力就会显得非常有用。
*/
/*
* 接口的概念:
* Java中的接口是一系列方法的声明,是一些方法特征的集合,
* 接口可以看做是一种特殊的抽象类,其中包含常量和方法的声明,而没有变量和方法的实现。
* 接口的意义:
* 弥补Java中单继承机制的不足。
* 接口只有方法的定义没有方法的实现,即都是抽象方法,
* 这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
*/

//接口的定义语法:
//interface 接口名称 {
//接口中的常量声明
//接口中的抽象方法声明
//}
//类可以通过实现接口的方式来具有接口中定义的功能,基本语法:
//class 类名  implements 接口名 {
// ……
//}
 /**
  * 要点
一个类可以同时实现多个接口;
一个接口可以被多个无关的类实现;
一个类实现接口必须实现接口中所有的抽象方法,否则必须定义为抽象类。
  */

/**
* 接口继承:
* Java中接口可以继承接口,与类的继承概念一致,
* 一个接口继承一个父接口就会继承父接口中定义的所有方法和属性。
* Java中接口的继承是多继承机制,即一个接口可以同时继承多个接口。
* 接口继承的基本语法 :
* interface 接口名 extends 父接口1,父接口2,……{
*    ……
* }
*/
 //方法重写
 /*
  * 在继承机制中子类继承了父类的属性和方法,同时还可以对父类中的属性和方法
  * 做进一步的扩充或者修改;子类对父类中声明(定义)的方法进行重新实现的改造
  * 称为方法重写(override)。
  */
 /*
  * 重写只能出现在继承关系之中。当一个类继承它的父类方法时,都有机会重写该父类的
  * 方法。重写的主要优点是能够定义某个子类型特有的行为。
  * 对于从父类继承来的抽象方法,要么在子类用重写的方式设计该方法,要么把子类也标识
  * 为抽象的。所以抽象方法可以说是必须要被重写的方法。
  */
 /*
  * 子类中可以对父类中定义的方法进行改造,但必须遵循一定的规则:
重写的方法返回类型一致;
重写的方法具有相同的方法名;
重写的方法参数列表必须相同;
不能重写被标识为final的方法;
重写的方法不能缩小访问权限;
如果一个方法不能被继承,则不能重写它。如:父类的private方法。
  */
 //方法重写(意义)最大的作用就是在不改变原来代码的基础上可以对其中任意模块进行改造。
 //重写方法可以实现多态,用父类的引用来操纵子类对象,但是在实际运行中对象将运行其
 //自己特有的方法。

 /**
  * 多态:发送消息给某个对象,让该对象自行决定响应何种行为。
  * 多态是通过方法的重载、重写实现的,要了解Java中的多态必须先了解“向上转型”。
  * 定义了一个子类Teacher,继承自Person。
通过Teacher teacher = new Teacher()实例化Teacher对象;
通过Person p= new Teacher();
表示定义了一个Person类型的引用,指向新建的Teacher类型的对象,
这就称为”向上转型”;
  * “向上转型”既可以使用子类强大的功能,又可以抽取父类的共性。
  */
 
//通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。 
 /*
  * 多态的实现
  * 对于父类中定义的方法,如果子类中重写了该方法,
  * 那么父类类型的引用将会调用子类中的定义的这个方法,这就是动态连接。
  * 父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,
  * 才可以被父类类型的引用调用。
  * 对于子类中定义而父类中没有的方法,它是无可奈何的。
  */
1 0
原创粉丝点击