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.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。