欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java面向对象篇补充

程序员文章站 2022-11-23 10:52:50
java面向对象篇补充接口新特性常量的定义抽象方法接口默认方法默认方法优点接口静态方法接口静态方法注意点接口私有方法接口注意事项final关键字注意点静态不能访问非静态内部类注意事项数组的创建于初始化注意点boolean注意点参数注意点接口新特性接口是多个类的公共规范,其中最重要的就是抽象方法。interface修饰的就是接口。随着java版本的不断更新,接口的内容也在不断的变化。在java7时,接口的内容有常量和抽象方法。java8,接口添加了默认方法和静态方法。java9,接口添加了私有方法。...

接口新特性

接口是多个类的公共规范,其中最重要的就是抽象方法。interface修饰的就是接口。随着java版本的不断更新,接口的内容也在不断的变化。
在java7时,接口的内容有常量和抽象方法。
java8,接口添加了默认方法和静态方法。
java9,接口添加了私有方法。

常量的定义

public static final  数据类型 常量名 = 数值;

常量名必须大写,public static final 可以省略。
final省略后依然是常量,必须赋值,不可改变,常量名全部大写,用下划线隔开单词。

抽象方法

public abstract  返回值类型  方法名(参数列表);

public abstract 关键词可以省略。
抽象方法没有方法体。并且实现类必须重写接口所有的方法,但是如果是实现是抽象类,那么可以不重写接口所有的方法。

接口默认方法

java8中,接口添加了默认方法

public default 返回值类型 方法名 (参数列表){
}

public 可以省略,default不能省略,默认方法是所有对象共有的方法,默认方法中方法体改变,所有实现类的对象使用该方法都会变,并且需要通过实现类的实例对象来使用,可以被实现类重写。要区别于接口的静态方法。

public interface Person {
        void eat();
        void work();
        default void sleep(){
            System.out.println("晚上睡觉");
          
        }

}
public class Test {
    public static void main(String[] args) {
        Student stu = new Student();
        stu.sleep();
        Teacher tea = new Teacher();
        tea.sleep();
    }

}

Student和Teacher是Person的实现类。

java面向对象篇补充

public interface Person {
        void eat();
        void work();
        default void sleep(){
            System.out.println("晚上睡觉");
            System.out.println("晚上也可以不睡觉");
        }

}

默认方法修改以后

java面向对象篇补充
可以看出只要修改接口中的默认方法,所有的实例使用该方法,方法体都会改变。

默认方法优点

优点在于容易对程序进行优化,并且增加了程序的可拓展性。

接口静态方法

java8中,接口可以添加静态方法

public static 返回值类型 方法名(参数列表){
}

public 可以省略。
特点是方法属于接口,可以通过接口名称使用,并且实现类无法重写该方法。

接口静态方法注意点

不能通过实现类对象使用,只能通过接口名称使用。

接口私有方法

java9开始,接口允许定义私有方法

private 返回值类型 方法名(参数列表){
}
static 返回值类型 方法名(参数列表){
}

私有方法主要是为了提取静态方法和默认方法的重复代码,提高代码复用性。

接口注意事项

1.接口没有静态代码块和构造方法。
2.一个类可以实现多接口。
3.如果实现类实现的多个接口中,多个接口中有重复的默认方法,那么实现类一定要重写那么重复的默认方法。
4.一个类直接父类中的方法和接口的默认方法冲突,优先使用父类中的方法。
5.除了抽象类外,所有实现类必须实现接口中所有的抽象方法。

final关键字注意点

final修饰成员变量,可以通过直接赋值和在构造方法中赋值两种方法。
但是如果要在构造方法中赋值,必须保证所有的构造方法都对final成员变量赋值。

public class Teacher
 final int age ;
    String name;
    Teacher(){
         age = 20;
    }
    Teacher(int age){
        this.age = age;
    }

静态不能访问非静态

静态方法和静态代码块中,不能使用非静态的方法和属性。
java面向对象篇补充

内部类注意事项

内部类的成员变量和外部类的成员变量重名情况下。内部类调用外部类的成员变量,用外部类名.this.成员变量名。

public class haha {
    int a = 10;
    class hehe{
      int a = 20;
      void he(){
          System.out.println(haha.this.a);
      }

    }
}
public class Test {
    public static void main(String[] args) {
       haha.hehe h = new haha().new hehe();
       h.he();
    }

}

java面向对象篇补充

数组的创建于初始化注意点

 int a [] = new int[5];

[]可以在数组名称之后,但是不常用,这种写法也对。

boolean注意点

为此字段选择适当的数据类型:isSwimmer,选择boolean
is 开头的命名方式一般用于布尔值判断。

参数注意点

所有参数传递,传递的都是副本。

本文地址:https://blog.csdn.net/hangmoxi/article/details/107269872