一.继承性
继承是面向对象的一个重要的特性,继承性反映的是两个类之间的一种关系。在面向对象的程序设计中,根据已有类派生出新类的这种现象,我们称之为类的继承机制。既当一个类具有另一个类的所有方法和属性时,我们称之为前者继承了后者,这两个类具有继承关系。被继承的类我们通常称为父类或者基类,而继承父类所有属性和方法的类为子类或派生类。
继承是面向对象编程设计能够提高软件开发效率的重要的原因之一。一个类可以同时派生出多个子类,而这些子类都自动地、隐式的拥有其父类已经定义的属性和行为。这种父类和子类的继承关系,其实就是事物的一般性和特征性的关系,而这种关系恰恰符合了人们对客观事物的认识过程和思维方式。
Java语言中只支持单继承,即一个子类只继承一个父类。这具有重要的地实际意义。它简化了人们对事物的认识和描述。面向对象程序设计中的继承性是对客观世界的直接反映。通过类的继承能够实现对问题的深入抽象描述,反映了人们认识世界的发展过程。
继承是通过关键字extends来实现的。
下面是关于继承的例子:
public class A {
String s="我是A类!!!";
public void showA() {
System.out.println(s);
}
}
//创建一个B类,B继承与A
public class B extends A{
String s1="我是B类!!!";
public void showB(){
System.out.println(s1);
}
public static void main(String[] args) {
B s1=new B();
s1.showB();
s1.showA();
}
}
二.多态
面向对象的另一重要特性:多态。多态是指应用程序中出现的“重名”现象。多态中允许以统一的风格编写程序,已处理种类繁多的已存在的类及其相关类。这样既降低了维护的难度,又节省了时间 。
在Java语言中,多态性主要表现在以下几个方面:
1.方法重载。方法重载通常是指在同一个类中,相同的方法名对应着不同的方法实现,这些 相同方法名的方法其区别在于方法所需要的参数不同。即采用不同的方法形参表,区分重载方法要求形参在数据类型、个数和顺序不同。
方法重载的例子:
public class TestPolymorphism1 {
Sring s="这是方法重载的示例";
String ss="这是类TestPolymorphism1";
public void show(){
System.out.println(ss);
}
public void show(String str){
System.out.println(s);
}
public static void main(String[] args) {
TestPolymorphism1 test=new TestPolymorphism1();
test.show();
test.show(test.s);
}
}
2.方法重写。方法重写主要应用与父类和子类之间。子类重写父类的方法,只是对应得方法实现不同,其方法名与所需的参数都相同。
方法重写的例子:
//定义类TestPolymorphism1,让其继承于类A;
public class TestPolymorphism2 extends A {
String p="这是方法重写的示例!!!";
public void showA() {
super.showA();
System.out.println(p);
}
public static void main(String[] args) {
TestPolymorphism2 test=new TestPolymorphism2();
test.showA();
}
}
3.抽象类。在Java中,一个类中的方法只给出了标准,而没有给出具体的实施流程,这样的类称为抽象类。抽象类是不能被实例化对象的。父类往往会被定义成抽象类。只给出标准而没有给出具体实施方法成为抽象方法。
4.接口。在多态机制中,接口比抽象类使用起来更为方便。由抽象方法组成的集合就是接口