Java复习基础笔记2

  1. 继承: Java 不支持多继承,但支持多重继承。Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

  2. 重写Override 与 重载Overload

    1、重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
    2、重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出 IOException 的子类异常。
        
    
  3. 方法的重写规则

    参数列表与被重写方法的参数列表必须完全相同。
    
    返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。
    
    访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。
    
    父类的成员方法只能被它的子类重写。
    
    声明为 final 的方法不能被重写。
    
    声明为 static 的方法不能被重写,但是能够被再次声明。
    
    子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。
    
    子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。
    
    重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
    
    构造方法不能被重写。
    
    如果不能继承一个类,则不能重写该类的方法。
    
  4. super关键字

    
    
  5. 重载

    重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
    每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
    最常用的地方就是构造器的重载。
    
    重载规则:
        被重载的方法必须改变参数列表(参数个数或类型不一样);
        被重载的方法可以改变返回类型;
        被重载的方法可以改变访问修饰符;
        被重载的方法可以声明新的或更广的检查异常;
        方法能够在同一个类中或者在一个子类中被重载。
        无法以返回值类型作为重载函数的区分标准。
        
    例子 :
    public class Overloading {
          
          
        public int test(){
          
          
            System.out.println("test1");
            return 1;
        }
     
        public void test(int a){
          
          
            System.out.println("test2");
        }   
     
        //以下两个参数类型顺序不同
        public String test(int a,String s){
          
          
            System.out.println("test3");
            return "returntest3";
        }   
     
        public String test(String s,int a){
          
          
            System.out.println("test4");
            return "returntest4";
        }   
     
        public static void main(String[] args){
          
          
            Overloading o = new Overloading();
            System.out.println(o.test());
            o.test(1);
            System.out.println(o.test(1,"test3"));
            System.out.println(o.test("test4",1));
        }
    }
    
  6. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y4vVQF36-1606393599808)(C:\Users\cfb\AppData\Roaming\Typora\typora-user-images\image-20201121165623302.png)]

  7. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-unzUpS5i-1606393599810)(C:\Users\cfb\AppData\Roaming\Typora\typora-user-images\image-20201121165814796.png)]

  8. 多态:

    多态是同一个行为具有多个不同表现形式或形态的能力。
    多态就是同一个接口,使用不同的实例而执行不同操作。
    多态的优点
    1. 消除类型之间的耦合关系
    2. 可替换性
    3. 可扩充性
    4. 接口性
    5. 灵活性
    6. 简化性
    
    多态存在的三个必要条件
    a.继承
    b.重写
    c.父类引用指向子类对象:Parent p = new Child();
    
    
    多态的实现方式
    a.方式一:重写:
    这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。
    b.方式二:接口
    1). 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
    2). java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。具体可以看 java接口 这一章节的内容。
    c.方式三:抽象类和抽象方法
    
  9. 抽象类

    1、由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。
    2、父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。
    3、在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
    4、抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
    5、
    
  10. 封装

    封装的优点
    1. 良好的封装能够减少耦合。
    2. 类内部的结构可以自由修改。
    3. 可以对成员变量进行更精确的控制。
    4. 隐藏信息,实现细节。
    
  11. 接口

    1、接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
    2、接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
    3、除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
    4、接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
    
    5、接口与类的区别:
    	a.接口不能用于实例化对象。
        b.接口没有构造方法。
        c.接口中所有的方法必须是抽象方法。
        d.接口不能包含成员变量,除了 staticfinal 变量。
        e.接口不是被类继承了,而是要被类实现。
        f.接口支持多继承。
    
    6、 接口有以下特性
       		a.接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
    		b.接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
    		d.接口中的方法都是公有的。
    

猜你喜欢

转载自blog.csdn.net/Anna_Liqi/article/details/110203576