面向对象

1.abstract能修饰哪些结构?修饰以后,有什么特点?

类、方法。

类不能实例化,提供子类
抽象方法,只定义了一种功能标准。具体的执行,需要子类去实现。

2.接口是否能继承接口?抽象类是否能实现(implements)接口?抽象类是否能继承非抽象的类?

能,体现接口之间的关系

能,接口中的所有抽象方法都默认是由 public abstract修饰的。
若一个类实现(implements)这个接口的时候,没有全部实现
接口中的抽象方法,那么这个类就是一个抽象类。

能,所有的类,若没有明确指明父类,那他们都有一个父类Object,既默认继承了Object类(非抽象类)。

3.声明抽象类,并包含抽象方法。测试类中创建一个继承抽象类的匿名子类的对象。

abstract AA{
    public abstract void m();
}

main(){
    AA a = new AA(){
          public void m(){
          
          }
    };

    a.m();
}

*4.抽象类和接口有哪些共同点和区别?

相同点:不能实例化,都可以被继承

不同点:抽象类:一定有构造器。可以没有抽象方法。单继承。
接口:不能声明构造器。多继承。JAVA 8之前:所有成员变量都默认是由 public static final 修饰的。
所有抽象方法都默认是由 public abstract 修饰的。
Java 8 中,你可以为接口添加静态方法和默认方法。从技术角度来说,这是完全合法的,只是它看起来
违反了接口作为一个抽象定义的理念。
静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。
我们经常在相互一起使用的类中使用静态方法。你可以在标准库中找到像 Collection/Collections
或者 Path/Paths 这样成对的接口和类。
默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。
我们在已有的接口中提供新方法的同时,还保持了与旧版本代码的兼容性。
比如:java 8 API 中对 Collection、List、Comparator 等接口提供了丰富的默认方法。
可以发现接口正在慢慢向抽象类的特性方向发展。

5.如何创建静态成员内部类和非静态成员内部类的对象?

  Person static Dog   Bird
  Person.Dog dog = new Person.Dog();

  Person p = new Person();
  Person.Bird bird = p.new Bird();
posted @ 2020-06-24 16:04  是羊驼呀  阅读(179)  评论(0编辑  收藏  举报