抽象类:不能实例化!子类继承抽象类, 实例化子类对象才可以调用, 多态的体现;

抽象方法:必须被重写才能被调用;
静态方法:类名直接调用,或者实例化对象调用;
构造方法:new后面的括号里面带参数,就用带参数的构造方法实例化,
                   new后面的括号里面不带参数,就用无参构造方法实例化;
构造方法的重载: 例如,程序有参构造方法1和2
这里面还涉及到一个执行顺序的问题,详情对比程序运行结果
 
这块的学习一定不要单纯背诵,结合eclipse练习!

package practice;
public class 你好{
    public static void main(String[]  args){
        傻 nn = new 聪();
        nn.b(333);
        nn.c();
        nn.d();
        //静态方法的调用
        nn.a();
        nn.aa();
        nn.aaa(4);
        //静态方法最好用类名直接调用,如下
        傻.a();
        傻.aa();
        傻.aaa(3);
    }
}
abstract class 傻{
    //无参构造
    public 傻() {
        super();
        System.out.println("我是无参构造方法");
    }
    //有参构造
    public 傻(int x){
        System.out.println("我是有参构造方法1");
    }
    public 傻(String x){
        System.out.println("我是有参构造方法2");
    }
    static void a(){
        System.out.println("我是静态方法1");
    }
    static int aa(){
        System.out.println("我是静态方法2");
        return 0;
    }
    static int aaa(int x){
        System.out.println("我是静态方法3");
        return 0;
    }
    //普通有返回值的方法
    public int b(int x){
        System.out.println("1111111111111111111111111111111");
        return x;
    }
    //普通返回值类型为空的方法
    public void c(){
        System.out.println("22222222222222222222222222222222");
    }
    //抽象方法和接口相似,没有方法体;
    abstract int d();
}
class 聪 extends 傻{
    //子类继承父类,父类中的抽象方法必须重写
    @Override
    int d() {
        System.out.println("333333333333333333333333333333333");
        return 0;
    }
}
程序结果:
 
我是无参构造方法
1111111111111111111111111111111
22222222222222222222222222222222
333333333333333333333333333333333
我是静态方法1
我是静态方法2
我是静态方法3
我是静态方法1
我是静态方法2
我是静态方法3