JAVA高级工程师课程笔记整理——(三)面向对象详解编程语言

(三)面向对象

类和对象

    面向对象(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(运行时异常)

       

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/13907.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论