美文网首页
继承和接口

继承和接口

作者: 山不转人自转 | 来源:发表于2020-10-18 22:41 被阅读0次

    继承(class 子类 extends 父类)
    Override:方法重写只改动方法体。

    继承不能继承父类私有属性及私有方法,构造方法(构造方法的名字和类名一样所以无法继承)。
    但是在继承父类后子类 子类的构造方法都有一句默认的super();

    super和this的含义:
    super:为父类的引用
    this:为当前对象的引用

    java的继承只能继承一个,但接口可以接好多个(可以理解为被继承的是亲爹,被实现的接口就是干爹)。

    所有类默认继承Object。

    抽象类(abstract):抽象方法是不含方法体的。

    如果继承的父类是抽象类,必须重写所有抽象方法,否则我,该子类必须定义为抽象类。

    我们把重写抽象类的过程称为实现方法。

    接口:

    public interface 接口名称 {     
    抽象方法     
    abstract void 抽象方法名;
    默认方法      
    public default void method() {             }   
    静态方法     
    public static void method2() {             }
    私有方法
     private void method(){       }
     }
    

    子类实现接口:class 类名 implements 接口名

    方法和变量都是遵守接近原则。

    与类继承不同 ,一个接口可以继承多个接口。

    接口中只能定义常量不能定义其他变量;

    public static final int num=10;
    接口中默认加上了public static final修饰;
    所以int num=10;就行了。

    多态

    父类类型 变量名 = new 子类对象; 变量名.方法名();

    注意:如果子类要调用的方法有而父类没有则需要向下转型:如:
    Animal a = new Cat();
    Cat c =(Cat) a;

    final 关键字:常量

    类:被修饰的类,不能被继承。
    方法:被修饰的方法,不能被重写。
    变量:被修饰的变量,不能被重新赋值。

    权限修饰符:

    public>protected>default>private

    匿名内部类

    前提:匿名内部类必须继承一个父类或者实现一个父接口。
    格式:

    new 父类名或者接口名(){    
     // 方法重写     
      @Override     
      public void method() {          
        方法体
       }
    };
    

    当接口做为方法参数和返回类型时

    //随便获取一个可以游泳的对象即可     
    public static Swimable getSwimableObj(){                  
        SwimStudent ss=new SwimStudent();                  
        SwimTeacher st=new SwimTeacher();        
        //返回的是SwimTeacher 的对象    
        return st;     
    }
    

    Lambda表达式:

    面向对象的思想:

    做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.

    //正常写法
    Comparator<Person> comp = new Comparator<Person>() {             
            @Override             
            public int compare(Person o1, Person o2) {                 
            return o1.getAge() ‐ o2.getAge();            
         }        
     };
     Arrays.sort(array, comp); // 第二个参数为排序规则,即Comparator接口实例 
    //Lambda
    Arrays.sort(array, (Person a, Person b) ‐> {            
            return a.getAge() ‐ b.getAge();            
         });
    

    Lambda省略规则

    1. 小括号内参数的类型可以省略;
    2. 如果小括号内有且仅有一个参,则小括号可以省略;
    3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。
      如 invokeCook(() ‐> System.out.println("吃饭啦!"));
    匿名内部类
    new Start(new Task() {             
        @Override             
        public void task() {                 
        System.out.println("开启任务啦!");
        }
    }).run();
    转换为:Lambda
    new Start(() ‐> System.out.println("使用lambda表达式开启任务!")
    ).run();
    

    相关文章

      网友评论

          本文标题:继承和接口

          本文链接:https://www.haomeiwen.com/subject/msocmktx.html