Java多态性 抽象类

一   多态性是面向对象的三大特征之一
               多态的含义是:对外一种表现形式,内在有多种具体实现

Java中多态的具体体现
              方法重载
              方法覆盖
              多态参数(新内容,重点、难点)

多态环境下对象造型

向下造型 –又称向下转型

向上造型 –又称向上转型

例如:(里面包含了多态的对象造型等)

public class aabb {

public static void main(String[] args) {
        
                    dog aDog=new dog();
                   aDog.eat1();
                     aDog.jiao();
                   Animal animal=new dog();
                 dog x= (dog)animal;
                 x.play();
                 Animal a= new pig();
                 pig y=(pig)a;
                  y.play();
                  y.eat2();
                  cat Cat=new cat();
                  Cat.he();
                  Cat.eat();
                  //Animal b = new cat();
                  //b.eata();
              
                }

}
                    class Animal {
            
                   void play(){
                 System.out.println("猫在玩小球球");
                
                
             } void eata(){
                System.out.println("动物吃肉");
             }

}

class cat extends Animal{
            
                    void eat(){
                   //super.eata();
                  System.out.println("猫喝着喝着又饿了,于是跳到河里捉鱼,不幸的是它被淹死了");
                }
                void he(){
                  System.out.println("之后猫跑到河边喝水");
              }
           }

class dog extends Animal{
                void eat1(){
                  System.out.println("狗饿的汪汪的叫");
                  
            }void jiao(){
                System.out.println("之后找到骨头在吃骨头");
            }
        }

class pig extends Animal{
               void eat2(){
                   System.out.println("一头猪在旁边肆无忌惮的吃草");
            }
        }
   二  抽象类
             用abstract修饰的类就是抽象类。如果某个类中包含有抽象方法,那么该类就必须定义成抽象类。但是抽象类中不一定有抽象方法。
        关键字abstract定义抽象类,一般语法:
                                             [访问权限] abstract class 类名 {
                                                      成员列表
                                        }
             抽象类只能用作基类,表示的是一种继承关系。继承抽象类的非抽象类必须实现其中的所有抽象方法,而已实现方法的参数、返回值要和抽象类中的方法一样。否则,该类也必须声明为抽象类。
         关键字abstract声明抽象方法,一般语法:
            [访问权限] abstract 返回值类型 方法名称(参数列表);
         抽象的作用
             在面向对象领域,抽象类主要用来进行类型隐藏;也就是使用抽象的类型来编程,但是具体运行时就可以使用具体类型。

利用抽象的概念,能够在开发项目中创建扩展性很好的架构,优化程序。

抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能。
     三   Java接口是一系列方法的声明,是一些抽象的集合
            接口的基本格式
            [修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;

[public] [abstract] 方法;
            }
             接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。
             extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。父接口可以存在多个,用逗号隔开。
             方法:接口中的方法只有定义而没有被实现
         Java接口继承接口的原则:
             Java接口可以继承多个接口
             接口继承接口依然使用关键字extends
         接口继承与类继承对比:Java类的继承是单一继承,Java接口的继承是多重继承。
         类实现接口的基本格式:
                [修饰符] class <类名> [extends 父类名] [implements 接口列表]{

}

时间: 2024-10-21 23:43:59

Java多态性 抽象类的相关文章

【翻译】JAVA中抽象类和接口的区别

不知道有没有人翻译过了,这篇是挺简单的,权当复习一遍内容吧. 很多常见的面试问题如"抽象类和接口有什么区别","你在什么时候用抽象类什么时候用接口".所以在这篇文章里面,我们会讨论一下这个话题. 在开始讨论它们的区别之前,我们先看看它们的介绍. Abstract class 抽象类 抽象类被用来抽象出子类的共同特征.它是不能被实例化的,它只能被子类继承作为超类使用.抽象类被用作它的子类下的层次结构创建模板(Abstract classes are used to c

java 多态性详解及常见面试题

java多态性 多态分两种: (1)   编译时多态(设计时多态):方法重载. (2)   运行时多态:JAVA运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态.(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态) 运行时多态存在的三个必要条件: 一.要有继承(包括接口的实现): 二.要有重写: 三.父类引用指向子类对象. 多态的好处: 1.可替换性(substitutability).多态对已存在代码具有可替换性.例如,多态对圆Circle类工作,对其他任

Java基础-抽象类和接口

抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 抽象定义: 抽象就是从多个事物中将共性的,本质的内容抽取出来.     例如:狼和狗共性都是犬科,犬科就是抽象出来的概念. 抽象类: Java中可以定义没有方法体的方法,该方法的具体实现由子类完 成,该方法称为抽象方法,包含抽象方法的类就是抽象类. 抽象方法的由来: 多个对象都具备相同的功能,但是功能具体内容有所不

java多态性

深入理解java多态性 昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正. (一)相关类 class A ...{         public String show(D obj)...{                return ("A and D");         }          public String show(A obj)...{                return (&quo

java 多态性

引言:多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定.因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性.多态性增强了软件的灵

[转载]深入理解java多态性

FROM:http://blog.csdn.net/thinkGhoster/article/details/2307001 昨天看到一个关于多态性的帖子,参考了回帖者的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正. (一)相关类 class A ...{         public String show(D obj)...{                return ("A and D");         }          public

Java多态性的表现

Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现. 如果在子类中定义某方法与其父类有相同的名称和参数,我们就说该方法被重写:子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了.如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同

Java多态性的体现方式

Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现. 如果在子类中定义某方法与其父类有相同的名称和参数,我们就说该方法被重写:子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了.如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同

java中抽象类与接口的区别

转自: http://blog.csdn.net/tp7309/article/details/10452445 二者的区别快忘得差不多了,从别处看到这文章感觉写的不错,正好复习复习,也给大家分享一下. 抽象类 abstract class 包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员变量和方法.所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法.当然抽象方法是一定要有的. 抽象类是用于单一继承的,不能实例化.而继承类一定要实现抽象方法,因为抽象