美文网首页
继承和接口

继承和接口

作者: 山不转人自转 | 来源:发表于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();

相关文章

  • PHP 多继承方法总结与思考

    1、继承单接口方式 2、继承多接口方式 需要注意的是当你接口继承其它接口时候,直接继承父接口的静态常量属性和抽象方...

  • 继承和接口

    继承和接口有相似的地方,二者都是对类的抽象但是什么时候用继承什么时候用接口? 接口相当于对继承的扩展,但又...

  • 继承和接口

    继承(class 子类 extends 父类)Override:方法重写只改动方法体。 继承不能继承父类私有属性及...

  • 接口

    接口的特点和继承 没有构造器,不能实例化 接口只能继承接口,不能继承类,且支持多继承 接口里的方法全是抽象的,没有...

  • js对象——继承(2)

    继承分为接口继承和实现继承,但由于接口继承只继承方法签名,而函数没有签名,所以ECMAScript只支持实现继承(...

  • Kotlin抽象类与接口 (2)✔️接口使用

    接口声明和实现接口与多继承接口继承接口中的具体函数和属性✔️同一函数继承多个实现的问题 比抽象类更加抽象的是接口,...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • 条款34:区分接口继承和实现继承

    区分接口继承和实现继承 c++的(公有)继承主要有两个意图:实现继承和接口继承。实现继承其实体现了面向对象封装的特...

  • JavaScript实现继承的方法

    大多OO语言都支持两种继承方式: 接口继承和实现继承 ,而ECMAScript中无法实现接口继承,ECMAScri...

  • JS继承

    大多OO语言都支持两种继承方式: 接口继承和实现继承 ,而ECMAScript中无法实现接口继承,ECMAScri...

网友评论

      本文标题:继承和接口

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