传智播客——毕向东25--第7天总结-6


1.继承:
      关键字:extends
  class Person
   {.....}
  class Student extends Person
   {.....}
  java 只支持单继承

2.子类调用父类成员,函数:关键字 super
    super.num();
    this:代表本类对象的引用
    super:代表父类对象的引用
    class Fu
    {
        int num=4;
     }
    class Zi extends Fu
    {
          void show()
          {
                System.out.println(super.num);
          }
    }
    class Ex
    {
            public static void main(String[] args)
               {
                     Zi z=new Zi();
                     z.show();
                }
     }

3.子类覆盖父类中的方法:
         当子类和父类中的函数一模一样时,父类中的函数被子类覆盖,即:保留父类功能,并重写该功能;
       class Fu
         { void show()
              {
                    System.out.println("我是父类");
                }
          }
        class Zi extends Fu
        {
              void show()
                {
                       System.out.println("我是子类");
               }
        }
        class Test
         {
               public static void main(String[] args)
                  {
                         Zi z=new Zi();
                         z.show();
                   }
          }
  1.子类覆盖父类,必须保证子类权限大于父类权限;
  2.静态只能覆盖静态
记住:
    重载:只看同名函数的参数列表
    覆盖:子类方法要一模一样,包括返回值类型
4. 构造函数--子类实例化过程
      子类构造函数初始化前,会去调用父类构造函数中的无参构造函数,如果父类中没有无参构造函数,那么编译将报错。除非在
      子类构造函数中显示的调用父类构造函数
      class Fu
      {
           Fu(int x)
             {
                  System.out.println("Fu run");
              }
          }
        class Zi
        {
              Zi()
               {
                 // super();//默认隐式存在
                    super(4);
                    System.out.println("Zi run");
                }
             Zi(int x)
               {
                // super();//默认隐式存在
                   super(3);
                  System.out.pintln("zi.."+x);
              }
      }
注意:super语句一定定义在子类构造函数的第一行,this()和super()不能同时出现

5.final关键字:
         final:最终
      1.可以修饰类,函数,变量
      2.被final修饰的类不可以被继承
      3.被final修饰的方法不能被重写
      4.被final修饰的变量,该变量值以后不可变更
      5.内部定义在类的局部位置上时,只能访问该局部被final修饰的局部变量
  final class Demo
   {
        ........;
   }
  final  void show(){ };
  public static final int x=3;//相当于常量,不可变更

6.抽象类:abstract
      1.含有抽象方法的类必须是抽象类
      2.不可用new创建对象
      3.使用冲向类中的抽象方法,要复写该抽象类中的所有方法
     abstract class  Student
      {
     abstract void study();
     abstract void playgame();
       }
     class BaseStudent extends Student
      {
           void study()
             {
                 System.out.println("baseStudy");
              }
            //abstract void playgame(); 可以继续抽象,类名前需加abstract关键字
         void playgame()
         {
                Systemlout.println("playgame");
          }
      }

7.模板方法模式:
       获取一段程序的运行时间:
   abstract class GetTime
     {
            public final void getTime()
               {
                     long static =System.currentTimeMillis();
                     runcode();
                     long end=System.currentTimeMills();
                     System.out.println("毫秒:"+(end-start));
                  }
           public abstract void runcode();
      }
    class SubTinme extends GetTime
      {
             public void runCode()
               {
                   for(int x=0;x<4000;x++)
                      {
                          System.out.println(x);
                       }
                  }
      }
   class Demo
     {
          public static void main(String[] args)
            {
                  SubTime gt=new SubTime();
                  gt.getTime();
              }
      }

8.接口:
   1.格式:interface{ }
   2.接口成员修饰符是固定的
       。成员变量:public static final
       。成员函数:public abstract
   3.接口的出现将“多继承”通过另一种形式体现出来,即“多实现”
接口定义时的格式个点:
     a.接口常见的定义
     b.接口中的成员都有固定的修饰符
    常量:public static final
    方法:public abstract
接口中的成员都是public的
接口不能创建对象,即不能被new
interface Inter
{
     public static final int Num=3;
     public abstract void show();
}
class Test implements Inter
{
     public void show(){};
}
class InterfaceDemo
{
      public static void main(String[] args)
       {
               Test t=new Test();
               System.out.println(t.Num);
               System.out.println(Test.Num);
               System.out.println(Inter.Num);
        }
 }
接口的实现:implements
 1.class Test extends Demo implements Inter,InterA,InterB
 2.interface A
   {
          void method A();
    }
    interface B extends A
     {
             void method B();
      }
    interface C extends B     //interface C extends B,A
    {
               void method C();
     }
    class D implements C
    {
               public void method A(){......}
               public void method B(){......}
               public void method C(){......}
     }

 java中接口与接口之间可以多继承://interface C extends B,A
接口的特点:
 1.接口是对外暴露的规则;
 2.接口是程序的功能扩展;
 3.接口可以用来实现;
 4.类与接口之间是实现关系,且类可以继承一个类的同时实现多个接口;
 5.接口与接口之间可以有继承关系;
abstract class Sporter
{
      abstract void play();
}
interface Study

        ......;
}
class Test extends Sporter implements Study
{
     ......;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值