Java 简单java类抽象类小🌰

[java]
package com.jasonote.classStudy;

/**
* Created by Jasonote on 2017/11/26.
* 抽象类的使用
* |- 抽象类继承子类里面会有明确的方法覆写要求,而普通类并没有
* |- 抽象类之比普通类多了一些抽象方法的定义,其他的组成部分与普通类完全一致
* |- 普通类对象可以直接实例化,但是抽象类的对象必须经过向上转型之后才可以得到实例化对象
* <p>
* 抽象类的限制
* |- 抽象类里面由于会存在一些属性,可以在抽象类中的构造方法里进行初始化;执行顺序为先执行父类的构造,再调用子类的构造
* |- 抽象类不能使用final定义;因为抽象类必须有子类,而final定义的类不能有子类
* |- 外部抽象类不允许使用static声明,而内部的抽象类允许使用static 声明,使用static 声明的内部抽象类就相当于一个外部的抽象类,继承的说话使用"外部类.内部类"
* |- 任何情况下,如果要执行类中的static方法的时候,都可以在没有对象的时候直接调用,对于抽象类也是一样
* |- 有些时候,由于抽象类只需要一个特定的系统子类操作,所以可以忽略掉外部的子类
* <p>
* 抽象类应用
*/
public class AbstractClass {
public static void main(String[] args) {
AbsA absa = new AbsAExtends();
absa.fun();
absa.fun2();

X x = new X();
x.print();

AAA aaa = AAA.getInstance();
aaa.print();

//
BBBB bbbb = new BBBB(9999);
bbbb.print();
}
}

abstract class AbsA {
public void fun() {
System.out.println("AbsA fun");
}

public abstract void fun2();
}

/**
* 一个子类只能够继承一个抽象类
*/
class AbsAExtends extends AbsA {

@Override
public void fun2() {
System.out.println("覆写抽象类的fun2");
}
}

abstract class AA {
static abstract class AAa {
public abstract void print();
}
}

class X extends AA.AAa {

@Override
public void print() {
System.out.println("+++++++++++");
}
}

abstract class AAA {
public abstract void print();

private static class B extends AAA {
@Override
public void print() {
System.out.println("抽象内部子类B覆写父类的方法");
}
}

public static AAA getInstance() {
return new B();
}
}

abstract class AAAA {
public void AAAA() {
this.print();
}

public abstract void print();
}

class BBBB extends AAAA {
private int num = 100;

public BBBB(int num) {
this.num = num;
}

@Override
public void print() {
System.out.println("num:" + num);
}
}

[/java]

Jason.wang

When you find your talent can't afford to be ambitious, be quiet and study !

You may also like...