基础知识

1.抽象类

  • 抽象类里面可以有普通方法。
  • 抽象类不能直接new,必须有一个子类来继承抽象父类。
  • 继承了抽象类的子类必须重写所有的抽象方法。
public abstract class TestAbstract {
    public abstract void method() ;
    public void normalMethod() {
        
    }
}

  抽象类中可以有构造方法,供子类创建对象时,初始化父类成员使用。(当然如果没有,则一般也有一个隐藏的无参构造方法)

  继承中的子类的构造方法如果没有显示调用父类的构造方法,那么第一行都会默认执行super()

//父类
public
abstract class Super { public Super() { System.out.println("This is the constractor method in Super"); } public abstract void method() ; public void normalMethod() { System.out.println("This is the method in Super!"); } }
//子类
public
class Sub extends Super{ @Override public void method() { System.out.println("This is override method in Sub"); } }
public class Test {

    public static void main(String[] args) {
        Sub sub = new Sub();//这里虽然子类里面没有明显的构造方法,但是其实是有一个隐藏的无参构造(而且这个构造函数的第一行默认调用了super()父类的无参构造)           
        sub.method();
        sub.normalMethod();
    }

}

This is the constractor method in Super
This is override method in Sub
This is the method in Super!

 

 2.接口

  

 

 

常量:

 

 

 

抽象方法:

 

 

 

 

 

默认方法:

 

public interface TestInterface {
    void method();
    default void normalMethod() {
        System.out.println("This is the default method!");
    }
}

 

 

静态方法:

 

public interface TestInterface {
    void method();
    
    static void staticMethod() {
        System.out.println("this is a static method in interface");
    }
}

 

 

 

 

 

私有方法:

 

 

 

 

 注意事项:(接口可以实现多继承)

 

 

 

 多态:

Super sup = new Sub();
sup.method();//这个是子类重写的法,可以调用。并且执行是子类的内容
sup.superMethod();//这个是父类中特有的方法,可以调用
sup.subMethod();//这个会直接报错,因为父类中没有这个方法

向上向下转型:

 

 

Final:(Final 和abstract 不能同时使用)

public class TestFinal {
    public final String name;    
    public TestFinal() {
        name ="test";
    }//如果这个空构造方法没有写的话,也是可以的

    public TestFinal(String name) {
        this.name = name;
    }
    
}

 

访问权限:

 

posted @ 2020-11-04 18:01  Joyce502  阅读(173)  评论(0)    收藏  举报