java面向对象程序设计

修饰符  class   类名{
    类的成员
}
===============
修饰符
    public|private|protected
    abstract|final
    static
    
    public class 公共类
    1.一个java文件只能有一个公共
    2.java文件的名称必须与公共类的类名相同
    
    abstract class 抽象类
    1.不能实例化对象
    2.可以包含抽象方法
    3.一般用于做父类
    
    public abstract class 公共抽象类
    
    final class 终态类
    1.不能被继承
    
    public final class 公共终态类
    
    static class 静态类
    1.static只能作为内部类或匿名类的修饰符
    
===============
类的成员:
1.成员变量(属性,字段,field)
2.成员方法(method)
3.构造器(构造方法,构造函数, structer)
4.类变量(静态变量)
5.类方法(静态方法)
6.内部类
7.静态代码块
8.成员代码块

例如:
class Demo{
    private int num;//成员变量
    
    //成员方法
    public int getNum(){
        return this.num;
    }
    
    //构造器
    public Demo(){
      ...
    }
    
    //类变量
    public static String str;
    
    //类方法
    public static void test(){
        ...
    }
    
    //内部类
    class InternalDemo{
        ...
    }
    
    //静态代码块
    static{
        System.out.println();
        ...
    }
    
    //成员代码块
    {
        for(int i=0; i<10; i++){
            System.out.println(i);
        }
    }
}


每个成员有什么用?
怎么调用?
什么时候执行?

类和对象:


    定义类


    修饰符 class  类名{
        八个成员:成员变量,成员方法,构造器,
        类变量,类方法,内部类,静态代码块,非静态代码块
        //成员变量:保存对象的属性值
        修饰符 类型 变量名;    
        //类变量:保存类的属性值(共享)
        修饰符 static 类型 变量名;    
        
        //成员非抽象方法:对象的行为(访问接口)
        修饰符 类型 方法名{
            ...
        }
        //成员抽象方法:对象的行为(访问接口,子类实现具体的方法
        修饰符 abstract 类型 方法名;
        
        //类非抽象方法:类的行为(访问接口)
        修饰符 static 类型 方法名{
            ...
        }
        //类抽象方法:类的行为(访问接口,子类实现具体的方法)
        修饰符 static abstract 类型 方法名;
        
        //构造器(与类名同名):实例化对象
        修饰符  构造器名{
            ...
            new 内部类();
        }
        
        //内部类
        修饰符 class 类名{
            成员
        }
        
        //静态代码块:初始化静态成员,第一次实例化对象自动执行,仅执行一次
        static{
            ...
        }
        //非静态代码块:初始化成员,每次实例化对象自动执行
        {
            ...
        }
    }
    


    ==========================
    实例化对象
    类名  对象名 = new 构造器();
    注意:
        抽象类和接口不能实例化对象,可用父类对象引用子实例.
    例如:
    1.父类型 对象名 = new 子类构造器();
    2.有方法:
        void fun(父类型  参数名){...}
       调用
        fun(子类对象);
    
    ==============================
    发消息(调用方法和属性)
    类变量和类方法(有static修饰的属性和方法)
        类名.变量
        类名.方法([参数列表])
        
    对象成员变量和对象成员方法(没有static修饰的属性和方法)
        对象.变量
        对象.方法([参数列表])
    

修饰符与关键字:


    public 修饰类,类中所有成员(除静态和非静态代码块)
    protected 修饰内部类,类中所有成员(除静态,非静态代码块和类 )
    private 修饰内部类,类中所有成员(除静态,非静态代码块和类)
    static 修饰内部类,类变量,类方法,静态代码块。
    abstract 修饰类,内部类,成员方法,类方法
    final 修饰类, 内部类,方法,变量,局部变量, 参数
    new: 运算符,实例化对象,类型 变量名 =  new 构造器(),返回一个对象.
    instanceof: 运算符,boolean 变量名 = 对象 instanceof 类型,返回一个布尔值, 可以做条件。
    this:当前对象自身的引用.注意,不能用在静态代码块和静态方法中.
    super:当前父类对象的引用.
        注意:
        1.不能用在静态代码块和静态方法中。
        2.调用父构造器, super([参数])。
        3.必须是第一条代码。
    extends:继承关键字, A有一个子类B, class B extends A{}
    package:打包,必须是源代码中的第一行,且只有一个package,可省略。
    import:导入,引用除java.lang包之外的其他包。

OOP的三大特征:
    封装:隐藏不必要细节,1.独立的运行单元;2.加访问修饰符。
    继承:class 子类名 extends 父类名, 子类继承父类中所有属性和方法.
    多态:同一服务(方法名相同),不同的行为(执行不同的代码块)。
        主要体现:
            1.重载:overLoad 编译时多态,方法名相同,参数不同(类型,个数,顺序)
            2.重写:override 运行时多态,子类重写父类同名方法,方法名,参数,返回类型相同,访问修饰符大于等于父类指定的修饰符
    高层不依赖低层,依赖抽象
    

代码例子

 

java面向对象程序设计

 java面向对象程序设计