zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVA工程师笔记编程语言 详解 高级 整理 课程
2023-06-13 09:20:40 时间

(三)面向对象

类和对象

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

   

13907.html

cjava