Java--interface&&implement 接口

interface&&implement

龙哥说这两个都是接口的意思,interface是名词可以理解成一个抽象类,用来定义一些方法体和属性

而implement则是动词,可以理解成对interface的实现。

 

这里写一个interface抽象接口类MyInterface

package interfaces;

public abstract interface MyInterface {
    //对属性进行声明和初始化并且后期不可更改
    public static final int id=666;
    public static final String name="Saul";
    //声明抽象方法
    public abstract void set_id(int a);
    public void set_name(String str);

    //默认为public abstract ,不加前缀也OK
   public abstract void test();
    public void print();

}

 

然后在写一个RealInterface类来实现它

package interfaces;

public class RealInterface implements MyInterface{
    private double height;
    public void print()
    {
        System.out.println("Here is override");
        System.out.println("He's height is "+height+"m");
        System.out.println("这个一个重写interface的方法");
    }

    public void set_height(double h){height = h;}
    public int get_id() {return id;}
    public String get_name() {return name;}

    @Override
    public void set_id(int a) {

    }

    @Override
    public void set_name(String str) {

    }

    //必须重写方法,哪怕只是一个空的方法体
    @Override
    public void test() {

    }


    public static void main(String[] args) {
        RealInterface m = new RealInterface();
        m.set_height(1.78);
        System.out.println("Erichas's id is "+m.get_id());
        System.out.println("Erichas's name is "+m.get_name());
        m.print();
    }


}

在实现接口的时候,必须重写抽象接口中的所有方法,即使他是一个空的方法

 

重写的时候要保证方法的形参这些类型也是一致的,否则就会报错。

而且一个类可以去实现多个接口,但是extend只能有一个,就好比

龙哥有可以有多个女性朋友,但是只能有一个女朋友。

 

MyInterface接口是抽象的,不能被直接实例化,那么想用它的实例化对象怎么办呢?

如果直接用MyInterface来实例化,就会给你自动补全里面的方法重写

 

 

这样就很繁琐,我们可以直接实例化MyInterface抽象类的实现类RealInterface

下面两种这样写都是可以的

 

运行结果

 

extends 继承

简单提一下

1.父类也称作超类、基类、派生类等。
2 Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。
3. Java中类没有多继承,接口有多继承。
4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法

但不见得可以直接访问(比如,父类私有的属性和方法)。
5.如果定义一个类时,没有调用extends,则它的父类是: java.lang.Object

 

java构造方法,指的是类构造对象时调用的方式,通常用来实例化对象。Java构造方法,分为有参构造方法,以及无参构造方法


比如在 Person test =  new Person()这就是调用的默认无参构造方法

网上参考:

构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重写,以参数的个数,类型,或排序顺序区分。

 

这里写个Person类

package interfaces;

public class Person {
    String test = "继承父类测试\n";
    private  String benz;
    final String lasts = "你的座驾是:";

    //重写构造方法
    public Person(){
        benz = "Mecedes";
    }

    //获取构造方法赋值后的变量
    public String get_car(){
        return this.benz;
    }
}

然后Extends类是它的子类

package interfaces;

public class Extends extends Person{
    public static void main(String args[]){
        Extends my = new Extends();
       System.out.println(my.test+my.lasts);
       System.out.println(my.get_car());
    }
}

运行结果:

 

 

 

 

顺便一提多态的概念

 

1.多态是方法的多态,不是属性的多态(多态与属性无关).

2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。

3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

posted @ 2021-12-31 11:16  Erichas  阅读(863)  评论(0编辑  收藏  举报