Java面向对象多态和接口

一、多态

  1.通过多态可以减少类中的代码量,可以提高代码的可扩展性。继承是多态的基础,没有继承就没有多态。

  2.把子类转换为父类称为向上转型,自动进行类型转换。把父类转换为子类称为向下转型,必须进行强制类型转换。 

  3.向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,通过父类引用变量无法调用子类特有的方法。

  4.向下转型后可以访问子类特有的方法。必须转换为父类指向的真实子类类型,否则将出现类型转换异常ClassCasException。

  5.instancefo运算符用于判断一个对象是否属于一个类或实现了一个接口。

  6.instancefo运算符通过和强制类型转换结合使用,先通过instanceof进行类型判断,再进行相应的强制类型转换。

  7.使用父类作为方法形参和使用父类作为返回值类型是使用多态的常用方式。

例子:

  子类转到父类(向上转换):

  Pet pet=new Dog("欧欧","雪娜瑞");

  pet.eat();

  (父类转到子类)向下转换:

Pet pet=new Pet("欧欧","雪娜瑞");

  pet.eat();

  Dog dog=(Dog)pet;  //强制类型转换狗对象

二、接口

  1.接口中的属性都是全局静态常量接口中的方法都是全局抽象方法,接口中没有构造方法。

  2.类只能继承一个父类,但可以实现多个接口。一个类如果实现了一个接口,则必须实现接口中的全部方法,否则必须将其为抽象类。Java通过实现接口达到了多重继承的效果。

  3.接口表示一种约定,接口表示一种能力。接口体现了约定和实现向分离得原则。

  4.抽象类利于代码复用,接口利于代码维护。

  5.通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性和维护性。

  6.面向接口编程意味着:开发系统时,主体构架使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换系统。

  7.C#中接口的成员主要是方法、属性。接口中不能包含常量、变量、构造方法和任何静态成员。定义接口时显示指定任何修饰符是非法的。

时间: 2024-11-06 18:26:31

Java面向对象多态和接口的相关文章

Java面向对象之类、接口、多态

Java面向对象之类.接口.多态 类 class Person { // 实例属性 int age; String name; // 类属性 static int v = 1; // 构造器 public Person() {} // 构造器重载 public Person(int age, String name) { this.age = age; this.name = name; } // 实例方法 public void tell_age() { System.out.println(

面向对象多态之接口

申明下:我也是新手,以下如有不对或不合适的地方望指出,一起交流O(∩_∩)O哈! 好了,转入正题 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Interface 7 { 8 class InterfaceTest 9 { 10 static void Main(string[] args) 11 { 12 #region 测试

Java面向对象作业-用接口方式测试向下转型

Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: 1 package com.java1234.chap03.sec13; 2 3 public class Test2 { 4 5 public static void main(String[] args) { 6 People p1=new Student(); 7 p1.say(); 8 9 Student student=(Student) p1; 10 student.say(); 11

Java面向对象—抽象类和接口

本文引用海子的一篇文章:http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: abstract void fun(); 抽象方法必须用abstract关键字进行修饰.如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰.因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象. 下面

06 面向对象:多态&抽象类&接口&权限修饰符&内部类

多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父类),运行看左边(父类). * 成员方法 * 编译看左边(父类),运行看右边(子类).动态绑定 * 静态方法 * 编译看左边(父类),运行看左边(父类). * (静态和类相关,算不上重写,所以,访问还是左边的) * 只有非静态的成员方法,编译看左边,运行看右边 */ class Demo_Polym

Java的多态体现 --- 接口

/** * * @author Administrator * 功能:接口体现多态 */ package com.test4; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub CarShop aShop = new CarShop(); aShop.sellCar(new BMW()); aShop.sellCar(new CherryQQ()); Sy

JAVA 之 多态 抽象 接口

一:多态 1:多态   一个对象有多种形式的能力 2:步骤 1编写父类派生子类 2子类重写父类方法 3用父类的数据类型引用子类对象 3:静态多态的实现方式就是方法重载 4:动态多态的实现方式就是重写父类中同名成员方法 5:使用instanceof关键字判断对象的真正类型 语句形式   引用instanceof 类名 eg;Empe=new Hourly(); if(einstanceofHourly){ Hourlyx=(Hourly) e;// 强制转换一个Hourly类型 } 6:多态的应用

java面向对象- 抽象类和接口

一.final关键字: 1.final关键字在java中被称为完结器,表示最终的意思 2.final能声明类.方法.属性: 使用final声明的类不能被继承 使用final声明的方法不能被重写 使用fanal声明的变量变成常量,常量不可以被修改.变量变成常量时,一般使用大写,例如:final int AGE = 22; 二.抽象类: 1.包含一个抽象方法的类就是抽象类. 2.声明而未被实现的方法就是抽象方法.必须使用abstract声明. 3.抽象类被子类继承,不能直接对其进行实例化,必须通过其

Java面向对象—多态

概述:同一个事物,在不同的时刻表现出不同的状态. 代码中如何体现: 要有继承, 要有方法重写, 父类引用指向子类对象 多态的成员访问特点 成员变量:编译看左边(父类), 运行看左边 成员方法:编译看左边,运行看右边(子类)对象(注意:这就是多态的精华)---父类引用指向子类对象,在执行的过程中执行子类重写的方法 构造方法:子类不能继承构造方法,默认访问父类空参构造 静态方法:编译看左边,运行看左边 package cn.czbk.no5; import java.util.Scanner; pu