• Java——面向对象知识总结


    面向对象的三条主线:

    一、类及类的成分

    1.类与类的关系:

    java程序是关注于类的设计。

    类从代码的角度:并列关系!  

    从执行、设计的角度:关联关系、继承关系、聚合关系

    class A{

    }

    class B{

       A  a = new A();

    }

    2.类的成分:属性   方法  构造器  代码块  内部类

    2.1 属性:

    ①变量的分类:成员变量(属性 Field)vs 局部变量(方法的形参、方法内部、代码块内部)

    ②数据类型:基本数据类型(8种,不同的数据类型对应不同的默认初始化值vs 引用数据类型(数组、类、接口 默认初始化值为null)

    ③属性的声明格式:修饰符  数据类型  变量名 = 初始化值;//java是强数据类型的语言

    ④对属性的赋值的操作:默认初始化、显式的初始化、代码块的初始化、构造器的初始化、调用方法或属性进行赋值

    2.2 方法  

    ①格式:修饰符(其它的关键字:static/final/abstract)返回值类型 方法名(形参列表){

    //方法体 }

    ②方法的重载(overload)   vs  方法的重写(override overwrite)

    ③ 方法的参数传递机制:值传递(难点)

    2.3构造器  

    ①构造器的作用:1.创建类的对象  2.初始化对象的成员变量

    ②构造器也是可以重载的。

    2.4 代码块  

    ①主要作用:用来初始化类的成员变量

    ②分类:静态的代码块  vs  非静态的代码块

    2.5 内部类  

    ①分类:成员内部类(static的成员vs 非static的成员)vs 局部内部类(方法内部声明的类)

    ②掌握 :如何创建成员内部类的对象(如:创建Bird类和Dog类的对象)、如何区分调用外

    部类或内部类的变量(尤其是变量重名时)、局部内部类的使用 (见TestInnerClass1.java)

    3. 类的初始化(创建类的对象)

    3.1 如何创建类的对象。

    如: Person p = new Person();  Date d = new Date();

    3.2 内存解析:

    ①栈:局部变量、对象的引用名、数组的引用名

      堆:new 出来的“东西”

      方法区:(字符串常量池)

      静态域:存放类中静态的变量

    ②如何理解创建的对象在内存中加载的过程(理解)

    3.3 子类对象实例化的全过程: SubClass sc = new SubClass();

    二、面向对象的三大特性:

    1.封装性:

    ① 通过私有化类的成员变量,通过公共的getter和setter方法来调用和修改

    ② 还可以对类的其他结构进行“封装”

    ③ 权限修饰符:public protected 缺省 private

    2.继承性:

    ①通过让一个类A继承另一个类B,就可以获取类B中的结构(主要的:属性、方法、构造器)。子类:类A  父类:类B

    ②java中的类的继承性:单继承的。

    3.多态性:

    ①体现:方法的重载与重写;子类对象的多态性  Person p = new Student();

    ②子类对象多态性的使用:虚拟方法调用。

    ③向上转型  向下转型 Student s = (Student)p; 

    //建议在向下转型之前: if ( p instanceof Student)避免出现ClassCastException的异常

    三、其它关键字:

    1.this:修饰属性、方法、构造器。表示:当前对象或当前正在创建的对象。

    2.super:修饰属性、方法、构造器。显式的调用父类的相应的结构,尤其是子父类有重名的方法、属性

    3.static :修饰属性、方法、代码块、内部类。随着类的加载而加载!

    4.final:修饰类、属性、方法。表示“最终的”

    5.abstract:修饰类、方法

    6. interface:表示是一个接口,(接口是与类并列的一个结构)。类与接口之间同时“implements”发生关系。

    7.package import …

    8.abstract:不能修饰属性、构造器、不能与final static private共用。

  • 相关阅读:
    正则表达式分组()、不捕获(?:)和断言(?<=)详解
    正则匹配IP
    正则匹配中文
    SPL--Serializable
    JavaScript中原型和原型链
    JavaScript中变量和函数声明的提升
    运行gulp提示:Task function must be specified
    vue-router 去掉#
    学以致用 ---- vue子组件→父组件通信
    删除node_modules
  • 原文地址:https://www.cnblogs.com/superjishere/p/11839894.html
Copyright © 2020-2023  润新知