接口 多态

接口

接口;是Java语言的一种引用类型,是方法的集合。接口的内部主要就是封转了方 法。抽象方法1.7jdk。 静态方法和默认方法1.8jdk。私有方法1.9jkd。接口,用inerface来进行修饰,他会产生class 文件,但主要的它不是一个类,只不过是一个引用类型的方法。
引用数据类型;数据, 类,接口。
接口的使用;他不能够被用来创建对象,他可以用被实现 用implements,类似于继承。
定义格式;

public interface 接口名称{//抽象方法 // 静态方法 //默认方法 //私有变量}

抽象方法;使用 abstract 进行修饰。
静态方法;使用static 进行修饰,可以直接被接口调用;
默认方法;使用 default修饰,供子类或者供子类重写,
私有方法;1,使用 private 进行修饰,供接口的默认方法或静态方法进行调用。
2.private 在加上static 叫私有静态方法;

public interface InterFaceName { public abstract void method(){}抽象方法;
public static void method2(){}静态方法; public default void
method3(){}默认方法; private void method4() {}私有方法; }

接口的实现;类和接口的关系称之为类实现接口。该类可以称之为接口的实现类。使用implements 关键字。
非抽象子类实现接口;1.必须重写接口中的所有抽象方法。2.继承了接口的默认方法。既可以直接调用也可以进行重写。
Class 类名 implements 方法名{//重写接口中抽象方法必须重写 //重写接口中默认方法也以进行选择}
抽象方法的使用;必须全部重写;

public interface Animal {
public abstract void eat ();
public abstract void sleep ();

} public class pig implements Animal {
@Override
public void eat() {
System.out.println(“吃肉肉,偶要吃肉肉”);
}

@Override
public void sleep() {
    System.out.println("睡觉肯本是不可能的,不要睡觉");
} } public class Demo {
public static void main(String[] args) {

    pig pig = new pig();
    pig.eat();
    pig.sleep();
} }

默认方法的使用; default
可以二选一,但是只能通过实现方法的过程进行调用。

public interface Fly {
public default void dafeiji() { //默认
System.out.println(“dahuiji”);
} } public class FeiJi implements Fly{

} public class Demo1 {
public static void main(String[] args) {

    FeiJi fei = new FeiJi();
    fei.dafeiji();
} }

静态方法的使用;
静态与.class 文件有关,只能通过接口名进行调用。不可以通过实现类的类名或实现类的对象调用。可以进行继承,

public interface Teacher {
public static void classing (){
System.out.println(“上课迟到了小明,罚站,作业还不写,为什么,”);
System.out.println(“昨晚写作业写的很晚,不会的就没做,会的太简单了,也没有做。”);
} } public class Student implements Teacher {

} public class Class {
public static void main(String[] args) {

    Teacher.classing();
} }

私有方法;
私有方法;只可以供默认方法进行调用。
私有静态方法;可以供默认方法和静态方法进行调用。
私有的方法是对默认方法和静态方法的辅助。
接口的多实现;
一个类只能继承一个父类, 而一个类可是实现多个接口的继承;这就叫做接口的多实现。
实现格式;

class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3… { // 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】 }

抽象方法(abstract);有多个抽象方法时,类必须重写所有的抽象方法,如果方法名相同时,只需要重写一次就可以了。
默认方法(default);有多个默认方法;实现类都可继承使用。如果名字方法名相同时,默认方法必须重写一次。
静态方法(static);接口中,存在同名的静态方法并不会冲突,原因是只能通过各自接口名访问静态方法。
优先级的问题;当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法。

public interface Teacher { public abstract void jiaoxue ();
public abstract void chazuoye (); } public interface XiaoZhang {
public abstract void yanjiang();
public abstract void chazuoye ();

} class Father {
public static void main() {
System.out.println(“叫你不好好学习,叫你考第一,越来不经常考第二吗,这会怎么考第一了那,打断你的腿。”);
} } public class Student extends Father implements Teacher,XiaoZhang {

@Override
public void jiaoxue() {
    System.out.println("good good study,day day up");
}

@Override
public void yanjiang() {
    System.out.println("your dream , my life");
}

@Override
public void chazuoye() {
    System.out.println("你太优秀了");
} } public class Class {
public static void main(String[] args) {
    Student s = new Student();
    s.chazuoye();
    s.jiaoxue();
    s.yanjiang();
    s.main();
}

接口的多继承;接口的继承使用extends,如果父类中的接口方法有重名,子类中还需要进行重写一次。
其他成员的特点;
接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
接口中,没有构造方法,不能创建对象。
接口中,没有静态代码块。

多态

多态;是指同一个行为,具有多个不同的表现形式。 继承或实现二选一。方法的重写具体意义;不重写方法没有意义。父类引用指向子类对象。
是指既继承,封装 第三大特征。
多态的体现;
格式; 父类类型 变量名 = new 子类对象; 变量名.方法名();当使用多态方式调用方法时,首先会检查父类中是否有该方法,如果没有系统则会进行报错,如果有,则会执行子类重写后的方法。
多态的好处;实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展性与便利。
理解多态的向上转型
向上类型;子类对于父类来说,是地低于父类的,就是在父类的下面,将子类进行转换父类的时,就是向上类型的转换。
父类类型 变量名 = new 子类类型 ();
理解多态的向下转型
向下类型;父类转换为 子类类型时, 是 向下转化。 是一个强制转化
子类类型 变量名 = new (子类类型)父类变量名
为什么要转型;
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥 有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点”小麻烦”。所以,想要调用子 类特有的方法,必须做向下转型。
转换异常;
在两个类型没有任何继承关系的时候,就不会符合定义的转化了未来避免错误的发生 JAVA 出了一个 instanceof关键字作为变量类型的矫正。
变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。

猜你喜欢

转载自blog.csdn.net/weixin_42943720/article/details/82222040
今日推荐