zoukankan      html  css  js  c++  java
  • Java中关于继承、类、多态、接口的知识点

    继承

    含义:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类

    优点:1)代码的重用性;2)子类扩展父类的属性和方法;3)父类的属性和方法可用于子类;4)设计应用程序变得更加简单

    继承的实现:

      关键字extends继承其他类,可以继承public,protected

      子类继承父类,父类派生子类

      下面是用于声明Salary类是Employee类的子类:

    public class Salary extends Employee

    Object类(基类/超类)是所有类的父类,Object类中的方法被每个对象继承

     方法重写:

      遵循规则:1)子类的方法返回值的类型、方法名和形参列表,必须和父类中的是相同的

           2)访问修饰符不能比父类更严格

           3)子类中重写的异常不能抛出比父类更多的异常

      equals()方法:用于判断两个对象是否相等

    super关键字:

      作用:调用父类中重写的方法

      注意:调父类构造器是第一句可执行语句;默认情况下子类会调用父类的无参构造器;做子类构造器初始化要先做父类构造器初始化

      格式:子类中调父类构造方法(super.方法名();)           调用父类中的构造器时(super(返回值1,返回值2...);)

    final关键字:创建符号常量

       1)修饰类:不能被继承

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

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

     类的高级概念

    访问修饰符:

       1)公开访问级别:public (可以被任何其他对象访问)

       2)受保护级别:protected(可以被同一包中的类或者其他包的子类都可以访问)

       3)默认访问级别:没有修饰符(可以被同一包中的其他类访问)

       4)私有访问级别:private(只有类本身可以调用)

    封装:

      是使类中的成员变量都是private,从而隐藏了类中的成员变量,确保数据的安全性

      封装后:get(只读)命名访问器方法,set(只写)修改器方法

      格式:set+属性名(首字大写)返回值为void;get+属性名(首字大写)返回值为自己想要的类型

      优点:1)类的成员变量可以成为只读或只写的

         2)类可以对存储在其成员变量中的内容有一个整体的控制

         3)类的用户可以不需要知道类是如何储存数据的

     静态初始化块:

      static{      {

        //语句                  //非静态

      }         }

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

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

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

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

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

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

    内部类:

      静态内部类:

    class Outer{
        static class Inner{
        }
    
     }

    成员内部类:

    class Outer{
        class Inner{
        }
    }

    局部内部类:

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

    匿名内部类:
      new 类或者接口的名字(){

        //匿名内部类的主体

      }

    多态和抽象

    多态:

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

      分类:静态多态(方法重载);动态多态(在运行中系统才能确定方法所指对象)

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

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

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

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

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

    抽象

      abstract关键字:

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

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

    接口

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

    接口声明

      关键字interface

      格式:

    public interface 接口名{
        //任意数量的final,static成员变量
        //任意数量的方法声明
    }

      接口性质:1)接口默认是抽象的;2)接口中的每一个方法默认也是抽象的;3)默认访问级别是public

    接口实现

        关键字:implements

        格式:public class 类名 extends 父类名 implements 接口名

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

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

             2)为外部类添加功能

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

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


    接口继承

      定义一个HockeyListener接口继承SportsListener接口:

    public interface HockeyListener extends SportsListener{
        //实现接口中的所有方法
    }

      定义一个SportsListener类实现HockeyListener接口:

    public class SportsListener implements HockeyListener {
        //也需实现六个方法
    }

      继承多个接口:

    public interfasce HockeyListener extends SportListener,EventListener{
        //需要实现三个接口中的方法
    }

    接口继承SportsListener和EventListener两个父接口

      

  • 相关阅读:
    在Ubuntu/Centos使用 Let's Encrypt 证书部署 HTTPS的方法
    Ubuntu14.04安装配置LAMP环境(php5.6)
    centos6 php5.4 升級到php 5.6
    为自己的2017年定个计划
    收益的一些话
    学习瓦力部署系统的项目配置和上线部署
    统计进仓和出仓数量随时间变化的剩余数量流程图
    Codeigniter 获取当前的控制器名称和方法名称
    [记]Windows 系统下设置Nodejs NPM全局路径
    [记]Cordova安装插件选择插件版本
  • 原文地址:https://www.cnblogs.com/wwg1426802735/p/4418873.html
Copyright © 2011-2022 走看看