Java面向对象总结

1、面向对象的特征:

a)抽象:事物的共性;善于划分问题的边界。

b)继承:继承是子类自动共享父类数据和方法的机制。

c)封装:一个对象的方法和属性封装在一起。实现软件部件的“高内聚、低耦合”。

d)多态:一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决即运行时多态通过方法的重写来实现多态性质的。


2、重点知识理解

1)方法的重载(overload)和重写(override)

重载(overload)

1、同一类中名称相同的方法、但方法的参数列表不同。

2、不能通过返回值的不同实现overload。

重写

1、子类中与父类中的某个方法名称和参数完全相同

2、类重写父类的方法时,只能比父类抛出更少的异常(父类异 常的子异常)。

3、子类方法的访问权限只能比父类的更大。

4、能覆盖父类的private方法,如果子类重写一个与父类名称和参数列表完全相同但是访问权限是private的方法,则子类只是定义了一个新方法。而并没有真正重写该方法。


2)构造器

构造器不能被重写只能被重载

规则:

a) 假如一个类没有定义构造器,那么编译器会默认一个无参构造器。

b)在子类调用构造器时,总是先调用基类的构造器。

c) 假如自定义了构造器,那么默认构造器将不存在。


3)抽象类和接口

抽象类 接口

1)可以有构造方法

2)可以有普通方法和普通成员变量,可以没有抽象成员

3)在代码实现方面发挥作用,实现代码的重用

1)方法全部都是public abstract类型

2)成员变量都是public static final类型(常量)

3)不能有构造方法

4)在系统架构方面起到作用,用于定义各个模块之间的通信。

只能继承一个抽象类,可以实现多个接口

4)Object类常见的方法

clone() Equals()finalize()

线程使用的方法:notify() notifyAll() wait() wait(long timeout)


当一个类继承一个基类时,程序代码加载顺序:

1、基类中的静态代码块(只加载一次)、具体类中的静态代码

2、基类中的构造方法、具体类的构造方法

3、静态方法需要调用才会执行。

示例:

class A{
    static {//基类静态代码段最先加载、且只加载一次
        System.out.print("a"+" ");
    }
    public static void prt1(){
        System.out.print("1"+" ");
    }
    public A(){
        System.out.print("A"+" ");
    }
}
public class B extends A{
    static {//具体类静态代码段在基类静态代码加载后加载、且只加载一次
        System.out.print("b"+" ");
    }
    public static void prt1(){
        System.out.print("2"+" ");
    }
    public B(){
        System.out.print("B"+" ");
    }
    public static void main(String[] args) {
        B b=new B();
        B c=new B();
        A a=new A();
        B.prt1();
    }
}

输出:a b A B A B A 2

你可能感兴趣的:(java,面向对象,多态性,抽象类和接口)