Java-面向对象(下)知识点总结

一、类的继承
1.class子类名 extends fuleiming
2.Java只支持单继承,不允许多重继承,有多层继承,即一个类可以继承某一个类的子类,如类B继承了类A,类C又可以继承类B,那么类C也间接继承了类A。
3.子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表) 调用父类的构造方法。
4.父类中定义了有参数的构造函数,如子类不想调用,则应在父类中再定义一个无参数的构造函数或子类中使用super()。

 

二、子类对象的实例化过程
    概括来说:
   ①子类的所有构造函数,默认都会访问父类中空参数构造函数。因为子类每一个构造函数内的第一行都有一句隐式super()。
   ②当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。
   ③当然,子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。子类中至少有一个构造函数会访问本类中的构造函数。


三、覆盖父类的方法(重写)
   1.①覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。
      ②如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super.方法的格式 。
      ③覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限 。(即子类权限必须大于等于父类权限,才能覆盖,否则编译失败)

   2.扩展总结:重写与重载的区别?!
      重载:只看同名函数的参数列表(参数列表不同,返回值、修饰符、抛出的异常可以不同)
      重写:子父类包括参数列表、返回值类型要一样,访问修饰符的权限大于被重写方法的访问修饰符。

 

四、final关键字
     ①可以修饰类、函数、变量②final标记的类不能被继承也不能被子类重写。③final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。④方法中定义的内置类只能访问该方法内的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参定义成final也是可以的,这就限定了我们在方法中修改形式参数的值。⑤public static final共同标记常量时,这个常量就成了全局的常量。
 
五、抽象类
  抽象类特点:
   ①抽象类必须用abstract关键字来修饰;抽象方法也必须用abstract来修饰。
   ②抽象类不能被实例化,也就是不能用new关键字去产生对象。
   ③抽象方法只需声明,而不需实现。
   ④含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。

 

六、接口
     如果一个抽象类中的所有方法都是抽象的,我们就可以将这个类用接口定义。接口是抽象方法和常量值的定义的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
   ①接口中的成员都是public访问类型的。
    变量:public static final
    方法:public abstract
   ②用extends关键字去继承一个已有的接口,也可以用implements关键字去实现一个接口中的所有方法,定义一个抽象类可以用implements关键字去实现一个接口中定义的部分方法。
   ③一个类可以继承一个父类的同时,实现一个或多个接口,extends关键字必须位于implemnets关键字之前 。

七、多态
  1、对象之间的类型转换
    fulei f = new zilei();
    zilei z = (zilei)f ; //强制将父类的引用,转成子类类型
  2.instanceof 操作符可以用它来判断一个实例对象是否属于一个类,例如 (f instanceof zilei)
  3.Object类及equals方法
   Object类,是所有对象的间接父类。
   public boolean equals(Object obj)//判断对象是否相等。
   4.扩展总结:
      多态中,成员函数在调用时,便一看左边,运行看右边;成员变量,无论编译和运行,都参考右边;静态成员函数,无论编译还是执行都参考 左边,不参考右边对象。


八、匿名内部类
 1.格式: new 父类或者接口(){定义子类的内容}
 2.张老师代码体现(2h16'36"-2h17'59")
  mb.usePCICard(new PCI){
            public void start()
          {
               System.out.println("start");
          }
            public void stop()
        {
              System.out.println("stop");
        }
  }

九、异常
   ①try,catch语句
   如: try{}catch(Exception e)
        {System.out.println(e.getMessage());}
    ②throws关键字
     函数后加“throws Exception ”,后面必须使用try{}catch()语句;若mian后有异常,但不想处理,则加 “throws Exception    ”不必  再用try catch语句。
    ③自定义异常与Throw关键字
     可自定义异常类,但必须继承 extends exception类。
    ④我们可以在一个方法中使用throw,try…catch语句来实现程序的跳转
       理解代码:
    void fun()

      try{
             if(x==0)
                 throw new XxEception("xxx");
             else
                 throw new YyEception("yyy");
            }
             catch(XxEception e){
              ... ...
            }
            catch(YyEception e){
            ... ...
          }
   }
  ⑤一个方法被覆盖时,覆盖它的方法必须扔出相同的异常或异常的子类。
    如果父类扔出多个异常,那么重写(覆盖)方法必须扔出那些异常的一个子集,也就是说不能扔出新的异常。
  ⑥finally{},无论异常是否发生,finally语句必须执行;若有System.exit(0),finally才不会执行

十、包
     ①package语句作为Java源文件的第一条语句。如果没有package语句,则为缺省无名包。
     ②import 包名(默认引入 import java.lang.*,所以不用写)
     ③jdk中常用的包
         java.lang----包含一些Java语言的核心类,如String、Math、 Integer、System和Thread,提供常用功能。
         java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
          java.applet----包含applet运行所需的一些类。
          java.net----包含执行与网络相关的操作的类。
          java.io----包含能提供多种输入/输出功能的类。
          java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。


十一、①类本身只有两种访问控制,即public 和默认,父类不能是private 和 protected,否则子类无法继承。public修饰的类能被所有的类访问,默认修饰(即class关键字前没有访问控制符)的类,只能被同一包中的所有类访问。
         ②使用jar文件

 

总结:现在只是把大部分知识点写下来,便于日后随时复习,如果要熟练应用,要在下面根据视频或其他资料多打代码,勤加练习。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值