zoukankan      html  css  js  c++  java
  • Java学习10.11

    今日学习内容:

    一、继承

    二、多态

    三、接口与抽象类

    一、继承:

    1.

    class 子类名 extends 父类名{

    ……

    }

    2.

    父类(parent class)

    超类(super class)

    基类(base class)

    例: 

    子类自动拥有父类声明为public和protected的成员,这就是继承特性的体现之一。

    class Animal {

    }     

    class Lion extends Animal {

    }

    3.继承条件下类的访问权限

    public 外界可自由访问
    private  外界不可访问
    protected 同一包中的子类都可以访问,另一包中的子类(派生于同一个父类)也可以访问
    default 如果不指明任何权限,则默认同一包中的类可以访问

    4.不允许继承的类

    final class 类名 {

    }

    以final声明的方法不允许覆盖。 以final声明的变量不允许更改。 利用final,可以设计出一种特殊的“只读” 的“不可变类”。此对象的属性不可改,而且也无法从此类派生出新子类。

    5.子类与父类方法间的关系

    由于Java并未对子类方法的命名做过多的限制,因此,子类与父类各自定义的方法之间,可以出现以下三种情况:

    扩充(Extends) 子类定义的方法父类没有同名
    覆盖/重写(Override) 子类父类定义了完全一样的方法
    重载(Overloads) 子类有父类的同名方法,但两者的参数类型或参数数目不一样

    6.“方法覆盖(override)”的要点

    方法覆盖要求子类与父类的方法一模一样,否则就是方法重载(overload)!

    7.Java“方法覆盖”的语法规则

    (1)覆盖方法的允许访问范围不能小于原方法。

    (2)覆盖方法所抛出的异常不能比原方法更多。

    (3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

    (4)不能覆盖静态方法。

    二、多态

    1.

    多态的最本质特征就是父类(或接口)变量可以引用子类(或实现了接口的类)对象。换句话说:子类对象可以被当成基类对象使用!

    2.Java中子类与基类变量间的赋值

    子类对象可以直接赋给基类变量。 基类对象要赋给子类对象变量,必须执行类型转换,

    其语法是: 子类对象变量=(子类名)基类对象名; 也不能乱转换。

    如果类型转换失败Java会抛出以下这种异常: ClassCastException.

    三、抽象和接口

    1.抽象类和抽象方法

    有abstract修饰的类称为“抽象类”,它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象。

    在方法前加上abstract就形成抽象方法,只有方法声明,没有实现代码.

    一个抽象类中可以包含非抽象方法和成员变量。包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法.

    从抽象类继承的子类必须实现父类的所有抽象方法,否则,它仍然是抽象类.

    2.抽象类的三种“类型”

    (1)直接定义了一个抽象方法

    (2)继承了一个抽象父类,但没有完全实现父类包含的抽象方法

    (3)实现了一个接口,但没有完全实现此接口所包容的抽象方法。

    3.使用抽象类

    抽象类不能创建对象,一般用它来引用子类对象.

    抽象类  抽象类变量 = new  派生自抽象类的具体子类();

    4.Java中“接口”的语法特性

    定义一个接口,采用关键字interface,实现一个接口,采用关键字implements

    接口的成员函数自动成为public的,数据成员自动成为 static和final的。

    如果接口不声明为public的,则自动变为package。

    一个类可以同时实现多个接口。

    5.接口的使用

    接口类型  接口类型的变量=new 实现了接口的具体类型();

    6.接口的扩充

    可以通过继承接口来扩充已有接口,并形成一个新的接口。

    interface OneInterface {

      void f1();

      }

    interface TwoInterface extends OneInterface {

      void f2();

    }

  • 相关阅读:
    ISAPI_Rewrite应用技巧与方法
    Linux下MONO执行C#程序
    正则表达式与 re 模块[转]
    网页自适应不同浏览器和分辨率[转]
    DIV 元素 | div 对象(4)
    自适应浏览器分辨率的javascript函数[转]
    常用正规表达式
    div置顶且屏蔽底下图层的图层
    IIS连接数
    什么是RIA?
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13991841.html
Copyright © 2011-2022 走看看