Java继承、多态和接口

继承

含义:可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类

优点:

1)代码的重用性

2)子类扩展父类的属性和方法

3)父类的属性和方法可用于子类

4)设计应用程序变得更加简单

继承的实现:

  关键字extends:用于继承其他类(extends出现在类声明类名后,extends后接要继承的类名)

访问修饰符   class  子类名   extends 父类名(){};

1 public class Employee (){}  //  父类
2 public class Salary extends Employee (){} // 子类

单继承与多继承、Object类

在Java中一个类只能有一个父类,多继承在Java中是不被允许的,但并不意味一个类没有祖父等往上的类。Object类是所有类的祖类,任何类都可以可以继承Object类(不是直接父类就是间接父类)

1 public class Employee (){}  //  父类
2 public class Salary extends Employee (){} // 子类
3 public class  Emp   extends Salary (){} // 子类

 

方法重写(子类对父类方法的重写):子类可以重写父类继承的方法,从而允许子类添加或者改变父类中方法的行为

    >子类的方法返回值的类型、方法名、和形式参数列表必须和父类一致

     >子类访问修饰符不能比父类严格

     >子类抛出的异常不能多于父类

super关键字:调用父类中重写的方法

  调用父类构造器:

    >调父类构造器是第一句可执行语句

    >默认情况下子类会调用父类的无参构造

    >做子类构造器初始化要先做父类构造器初始化

  格式: super.方法名()

 final关键字

  1)修饰类:不能被继承

   2)修饰方法:最终方法不能被重写

   3)修饰变量:变量值不能被修改

 类的高级概念

 静态成员:

  关键字static 允许成员变量和方法不于类的特定实例关联,通过关键字static 声明的成员变量和方法可以被认为是全局的,任何其他类可以直接访问静态成员和调用静态方法,而不需要该类的一个实例

实例初始化块

在类的对象每次实例化时执行一次,在构造器之前执行

  执行顺序:1)子类中相应的构造器被调用

       2)执行对super的调用,控制流程跳转回子类构造器

       3)父类构造器执行完,控制流程跳转回子类构造器

       4)在该子类构造器中的super()后面的任何语句执行前,实例化初始化块执行

       5)执行子类构造器中super()后面的语句

内部类:

  静态内部类:

class Outer{
    static class Inner{
    }

 }

成员内部类:

class Outer{
    class Inner{
    }
}

局部内部类:

void f(){
    class Inner{
        void g(){
        }
    }
}
    

匿名内部类:
  

 1 public class Outter {
 2
 3     public void print(Inter inter){
 4         inter.printfInterface();
 5     }
 6 }
 7
 8 interface Inter{
 9     void printfInterface();
10 }
11 public class Test {
12
13         outter.print(new Inter(){
14             @Override
15             public void printfInterface() {
16                 System.out.println("匿名内部类打印");
17             }
18         });
19     }
20 }

 

多态和抽象

多态:不同情形下的多种状态

  分类:

    >静态多态(方法重载)

    >动态多态(在运行中系统才能确定方法所指对象)

  步骤:1)编写父类派生子类

     2)子类当中重写父类方法

     3)使用多态(用父类数据类型引用子类对象)

     4)调用子类重写方法实现

  instanceof关键字:用于判断运行时对象的真正类型

抽象

  abstract关键字: 放于class之前(抽象类),不能实例化父类对象,需要被继承后才能实现

  抽象方法:只有方法签名,没有方法主体,类也必须声明为抽象类,任何子类必须重写抽象方法,除非子类本身也是抽象

public abstract class Pet {
    private String name;        //名字

    public Pet() {}

    public Pet(String name) {
        super();
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Pet [name=" + name + "]";
    }
    public abstract show();
}

接口:不能被实例化,不包含任何构造器,所有方法都是抽象的,不能包含实例成员变量,不能被一个类继承,只能被一个类实现,能够继承多个接口

接口声明

  关键字:interface

public interface Board { public String Manufacturer(); //生产商}

  接口性质:

    >接口默认是抽象的

    >接口中的每一个方法默认也是抽象的

    >默认访问级别是public

接口实现

    关键字:implements

 

 1 public class Nboard implements Board {
 2     private String Manufacturer; //生产商
 3
 4     public Nboard(String manufacturer) {
 5         super();
 6         this.Manufacturer = manufacturer;
 7     }
 8
 9     public Nboard() {
10         super();
11
12     }
13
14     public String Manufacturer() {
15
16         return Manufacturer;
17     }
18
19 }

  接口与接口之间可以多重继承,只能继承一个父类

  使用接口原则:1)使用接口解决多继承

         2)为外部类添加功能

         3)以面向对象角度考虑,将一个类与自身的特征和行为依赖于外部的可选的特征和行为分离,让类尽可能单纯

  接口优点:将设计和实现相分离,对外(调用者)隐藏实现(而通常调用者也不需要关心实现);面向接口编程是oop的核心

接口继承

public class Nboard  extends Pet implements Board {}

多重继承

public interface HockeyListener extends SportsListener{
    //实现接口中的所有方法
}
public class SportsListener implements HockeyListener {
    //也需实现六个方法
}
public interfasce HockeyListener extends SportListener,EventListener{
    //需要实现三个接口中的方法
}
时间: 2024-08-02 15:29:48

Java继承、多态和接口的相关文章

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

JAVA基础笔记(很实用)继承-多态-抽象类-接口-异常-集合-IO-线程-Socket

第七章:Java继承 一.继承的概念 1.一个父类派生出一个子类的机制称为继承. 2.承是重用程序代码的有力手段,当多个类之间存在相同的属性和方法时,可以从这些类中抽象出父类. 3.们只需要在父类中定义这些属性和方法,而子类无须重新定义这些属性和方法,直接从父类继承即可. 4.通过继承,子类就会自动的拥有在父类中定义的属性和方法. 5.两个或多个类的成员中存在一部分相同的情况,通过继承机制,可以利用现有的类来创建新的类. 6.子类不但拥有父类的成员,还可以定义新的成员. 7.可以提高软件的可重用

JAVA 之 多态 抽象 接口

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

java----基础(this,继承,多态,抽象类,接口)

this指针 this指针在类定义时用到,this属于用类实例化的对象,只能在定义类的时候使用:(在下面的代码中会有体现) 类变量&类方法 定义: 访问修饰符 static+数据类型+变量名 所有该类的对象均可访问,均可修改,不会在调用后初始化,相当于全局变量. 可以被所有对象访问到,并且可以通过类访问到  类名.类变量 静态方法 == 类方法 可以被类名和对象访问到 原则上类变量用类方法来访问 类方法中不能访问非类变量,类变量可以被非类方法访问. 四种访问控制符: public : 对外公开

Java面向对象多态和接口

一.多态 1.通过多态可以减少类中的代码量,可以提高代码的可扩展性.继承是多态的基础,没有继承就没有多态. 2.把子类转换为父类称为向上转型,自动进行类型转换.把父类转换为子类称为向下转型,必须进行强制类型转换. 3.向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,通过父类引用变量无法调用子类特有的方法. 4.向下转型后可以访问子类特有的方法.必须转换为父类指向的真实子类类型,否则将出现类型转换异常ClassCasException. 5.instancefo运算符用于判断一个对

java 继承类与接口问题

java 先extends 继承类,再implements 继承接口 1 public class DataBase extends ClassBase implements Ijiekou { 2 3 }// end

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继承多态

一. 父类引用指向子类对象父类名(接口名) 对象名=new 子类(接口)名称() 二. 父子继承关系中,成员变量重名1.直接通过子类对象访问成员变量 =左边是谁,就优先用谁2.间接通过成员方法访问成员变量 该方法属于谁,就优先用谁成员方法重名 创建对象是谁,优先用谁的方法,没有向上找方法的覆盖重写(同,同)和重载(同,不同)@Override 注解,安全检测三. 方法覆盖重写时,注意:1.方法名,参数列表必须相同2.子类方法的返回值(String)必须[小于等于]父类方法(Object)的返回值

Java有关多态类的小程序

1.使用instanceof运算符判断一个对象是否可以转换为指定的类型: 代码: public class TestInstanceof { public static void main(String[] args) { //声明hello时使用Object类,则hello的编译类型是Object,Object是所有类的父类 //但hello变量的实际类型是String Object hello = "Hello"; //String是Object类的子类,所以返回true. Sys

JAVA继承、多态与接口

一.继承1.继承的优点 代码的重用性 子类可以扩展父类的属性和方法 设计应用程序变得更加简单 父类的属性和方法可用于子类2.如何判断类具有继承关系 类和类的关系 1)has-a(组合) 2)is-a(继承)3.单继承和多继承 单根性: 在java中,一个类只能有一个父类 传递性: 子类可以将父类的属性和方法传递给自己的子类4.所有类的根类都是Object(超类,基类)5.方法重写(以后多态的使用要用到)@Override//注解 1)子类的方法的返回值类型.方法名和形式参数列表, 必须和父类中的