zoukankan      html  css  js  c++  java
  • 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{
        //需要实现三个接口中的方法
    }

     

  • 相关阅读:
    React-Native 之 GD (二十一)APP 打包
    React-Native 之 GD (十九)TabBarItem 逻辑完善 / 关闭筛选菜单滑动手势 / Navigator 掉帧卡顿问题处理
    React-Native 之 GD (二十)removeClippedSubviews / modal放置的顺序 / Android 加载git图动图 / 去除 Android 中输入框的下划线 / navigationBar
    React-Native 之 GD (十六)首页筛选功能
    React-Native 之 GD (十七)小时风云榜按钮处理
    React-Native 之 GD (十八)监听 TabBarItem 点击与传值实现 点击 Item 进行刷新功能
    SettingsPLSQLDeveloper
    UsageLog4j
    SettingsJDK
    UsageGrideReport++
  • 原文地址:https://www.cnblogs.com/Myth-FQ/p/4419576.html
Copyright © 2011-2022 走看看