多态、抽象类、接口

​​​​1.多态

  1. 非静态成员方法:编译看左边,运行看右边  

          成员变量:编译看左边,运行看左边

          静态方法:编译看左边,运行看左边

     2.多态中,属性永远是调用父类中的属性

2.静态与非静态

  1. 静态属性可以通过类名和对象访问,是这个类所有对象所共享的
  2. 类中的静态属性跟随着类,一起保存在内存中的方法区
  3. 非静态属性: 创建对象后,系统会自动给对象中的非静态属性做初始化赋默认值,静态属性:类加载到内存中的时候,系统就会给类中的静态属性做初始化赋值
  4. 如何记录一个类在一段时间内,一共创建了多少个对象                                           答:设置一个静态计数器,构造器里面count++
  5. 静态方法中不能调用类中的非静态方法或非静态属性,不能访问this
  6. 静态代码块  static{},一般用来给静态成员初始化,随着类的加载而执行
  7. 匿名代码块:静态代码块,构造代码块。  

3.final与abstract

  1. Final修饰变量,不能被修改,方法不能被重写,类不能被继承
  2. Final修饰成员变量时必须手动赋值,局部变量不用手动赋值
  3. Final修饰引用类型变量 ,指的是引用s的指向的对象不能改变(对象的地址不能改),但是可以改变类的属性(name,age)Student s=new Student()
  4. Abstract                                                                                                                 

         抽象方法:没有方法体的方法abstract void show(),只能存在于抽象类和接口中

         接口中不用在void 前写abstract ,默认:public,abstract,

         抽象类:抽象类中可以有普通方法,但抽象方法只能存在于抽象类或接口中                              

        抽象类不能进行实例化创建对象,而非抽象类可以实例化创建对象,

         他们中都有构造器,但抽象类的不能用来创建对象,可以通过匿名内部类

    5.  抽象类是用来被子类继承的,子类继承抽象类,并且实现抽象类中的抽象方法

3.接口:

  1. Interface,接口最终也会被编译成.class文件
  2. Jdk8中允许在接口中编写静态方法和默认方法  jdk9中还允许在接口中编写私有方法

     接口中的默认方法由接口的实现类对象去调用

         Interface Action{

                 Public void show()

                           Static void show1(){}

                             Default void show2(){}

                     }

              Class Test{

                   Psvm{

                    Action.show1();}

                原因:有利于功能升级,让别人的实现类不用再重写,方便使用

               子类能不能重写接口中的静态方法和默认方法呢? 能重写默认,不能重写静态

      3. 接口中抽象方法修饰符不能为protected。Private ,必须是public

      4. 接口的使用方式:创建接口的实现类+匿名内部类  + lambda表达式

               匿名内部类:

                 new Action(){

                         @Override

                         Public void show(){System.out.println(“hello”);}

                        }.show();

    

               函数式接口

                              ( (Action)()->System.out.println("hello")).show();

       5.一个类实现类接口,那么就要实现接口中所有的抽象方法,否则这个类自己就必须声明为抽  象类

      6.类是单一继承,接口是多实现,多继承,,一个类实现了多个接口,那么就需要把这多个接口中的抽象方法全都实现

    

       7.实现多接口时,两个父类有同名的默认方法,则在实现类中调用方法时,要表明调用的哪个方法·

                      default void show2(){

                                System.out.println("这是Inter2中的默认方法");

                                }

                      public void show2() {

                                     Inter1.super.show2();

                                        } 

        8.接口和接口之间,类和类之间都有继承关系,类之间是单继承,接口之间是多继承

interface  inter4 extends Inter3,Inter5{}

        9.多态的前提是继承,必须要先有子父类关系,而类和接口之间的实现关系,也是继承的一种形式,所以在类和接口的实现关系中,也可以使用多态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值