JAVA高级工程师课程笔记整理——(三)面向对象

来源:互联网 发布:windows.hlp官方下载 编辑:程序博客网 时间:2024/06/12 07:54
(三)面向对象
类和对象
    面向对象(oop)
    面向切面(AOP)
    C语言 面向过程编程
    对象指(用来描述客观事物的一个实体,由一组属性和方法构成)个体实例
        属性:
            对象具有的特征
        方法(函数):
            对象具有的行为
    类:
        具有相同属性和方法的一组对象的集合
    类是对象的抽象,对象是类的具体
    定义一个类:
        关键字:class
        被final修饰的类不能被继承
        String也是一个类
            String name2 = new String("张三");//创建了两个对象
        学会画类图
    创建对象 new
        Student student =new Student();
    定义方法:
        访问修饰符 返回类型 方法名(参数){
        }
        无参方法
        有参方法
    成员变量和局部变量
        局部变量作用域只在该方法内
        成员变量(全局变量)作用域整个类中
    比较两个对象的是否是同一个对象
        equals
        Person p1 = new Person();
        Person p2 = new Person();
        p1.equals(p2) 结果为false
    带参数的方法
        基本数据类型,操作传递的是变量的值,
        改变一个变量的值不会影响另一个变量的值。
        引用数据类型(类、数组和接口),
        赋值是把原对象的引用(可理解为内存地址)
        传递给另一个引用
    方法的重载
        同一个类中
        *方法名必须一致
        参数个数或类型不同或顺序不同
        与返回值和访问修饰符无关
    成员方法
        构造方法
        没有返回值类型
        方法名与类名一致
        可以有参数
            每个类都有默认的无参构造方法
            *如果有其他构造方法这时候需要用无参构造方法
             就需要把这个无参构造方法写出来
            访问修饰符  构造方法名(<参数>){
            }
            创建对象是调用了类的构造方法
        带参的构造方法
    this(当前对象)
    调用属性
    this.name = "李四";
    调用方法
        this.print()
    调用构造方法
        this();
        this(34)
        *构造方法中调用别的构造方法只能掉用
            一个,并且只能放在第一行
    构造代码块
    {}
    构造代码块总是优先构造方法执行
    一般用于初始化配置使用

封装    
    访问权限
    public   公共的,都能访问
    private  只能在类中使用
    protected    
    默认
    封装(private私有化)
        将类的某些信息隐藏在类内部,
        不允许外部程序直接访问,
        而是通过该类提供的方法来
        实现对隐藏信息的操作和访问
    封装的好处:
        便于使用者正确使用系统,防止错误修改属性
        有助于系统之间的松耦合,提高系统独立性
        提高软件的可重用性
        降低了构建大型系统的风险
    javabean
        eclipse自动生成setter,getter方法
        alt+shift+s  选中生成setter,getter方法
    static(静态)    
    静态变量
        类名直接调用静态变量
        被static修饰的成员变量在内存中
         可以被每个类对象共享,节省内存空间
    静态方法:
        被static修饰的方法,可以类名直接调用
    静态代码块
        static优先级高于构造代码块
        
继承
    is a关系  子类 is a 父类
    extends 继承父类
    java中只支持单根继承
        (接口可以继承多个接口interface)
    super关键字
    super(); 调用父类的无参构造方法
    构造方法中调用别的构造方法只能掉用
    一个,并且只能放在第一行
    调用父类属性
        super.name
    调用父类成员方法
        super.print()
    *子类会默认的调用父类的无参构造方法
    *子类继承父类不能被继承的父类成员
        a.private成员
        b.构造方法
        c.子类与父类不在同包,使用默认访问权限的成员
    继承的优点:
        实现代码的重用
    方法的重写(方法的覆盖)
    规则:
        1、方法名一样
        2.参数列表相同
        3.返回值类型相同或其子类
        4.访问权限不能严于父类
        父类的私有方法不能继承也不能重写
    Object
    所有类的父类
    String是Object的子类
    所有的类默认都继承Object
        toString();
        equals();
    重写toString方法:
            //重写toString方法
            public String toString(){
                return "姓名为:"+name+",年龄为:"+age;
            }
    重写equals方法:
        //当年龄,姓名样代表同一个人
        public boolean equals(Object obj) {
            Person p = (Person)obj;
            //姓名和年龄匹配说明是同一个人
            if(p.name.equals(this.name)&&p.id.equals(this.id)){
                return true;
            }else {
                return false;
            }
        }    

多态
    多态:同一个引用类型,
        使用不同的实例而执行不同操作
    抽象:
        抽象方法
            没有方法体
            被abstract修饰
        抽象类:
            abstract 修饰的类
        一个类有抽象方法,该类一定是抽象类
        一个类是抽象类,可以没有抽象方法
        抽象类不能实例化
    向上转型(自动完成)
        Pet pet = new Cat();
    向下转型(强制转型)
        Cat cat = (Cat)pet;
    instanceof 判断向下转型的类型
    
抽象类和接口
    抽象类概念:
        1、抽象类中可以没有抽象方法,
            但包含了抽象方法的类必须被定义为抽象类
        2、如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
        3、没有抽象构造方法,也没有抽象静态方法
        4、抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
接口
    一个接口可以继承多个接口
    1、功能的扩展
    定义接口
        interface
        接口中的方法都是 public abstract
    实现接口
        implements
    一个类可以实现多个接口
    接口中的变量都是静态常量(static final)
    2、接口是一种约束(行业规范)
        面向接口编程

异常
    异常发生会终止程序运行
    java异常处理机制
    异常处理语法:
        try  ---- 监视代码(可能发生异常)
        catch ----捕获异常
        finally ---无论发生异常,都会执行
        throw ---- 抛出异常
        throws ---- 声明异常
    try{
    
    }catch(异常类型 ex){
        
    }
    打印异常堆栈信息
        ex.printStackTrace();
        定位出现异常的代码
    finally 代码块
        有无异常都会执行
        一般放置释放资源的代码
        JVM关闭(System.exit(1))
            finally代码块不执行    
        快捷键:alt+shift+z
    throws(声明异常)和throw        
        throws Exception
        声明多个异常,以逗号隔开
        throw 抛出异常
        
        Throwable
            Error(无法恢复的错误)
            Exception (可以解决的异常)
                检查时异常 必须try catch
                运行时异常 可以不捕获
    自定义异常
        继承Throwable类
        继承Excepion
        RuntimeException(运行时异常)

       
阅读全文
0 0
原创粉丝点击