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共用。
最新文章
- BOM对象有哪些:
- UIScrollView的delaysContentTouches与canCencelContentTouches属性
- codesmith生成java类
- 【GIT】使用Git命令窗口将本地工程提交至远程GitHub
- shell中读写mysql数据库
- linux 切换多个jdk脚本
- C# 对委托的BeginInvoke,EndInvoke 及Control 的BeginInvoke,EndInvoke 的理解
- Invalid content was found starting with element 'taglib'”
- Eight(South Central USA 1998)(八数码) 分类: bfs 2015-07-05 22:34 1人阅读 评论(0) 收藏
- 【iOS】Xib的使用与File&;#39;Owner总结
- 51nod_1122:机器人走方格 V4 (矩阵快速幂)
- ibv_open_device()函数
- PHP开发工程师应该具备那些技术能力
- ubuntu14.04 网络配置
- linux中epoll模型
- Applet、Scriptlet与Servlet
- 字体转换网站——Font Squirrel
- Muduo学习笔记(一) 什么都不做的EventLoop
- StratifiedKFold与GridSearchCV版本前后使用方法
- Map.containsKey(String key)
热门文章
- TCP练习
- 饿了么 <;el-input>;<;/el-input>;输入框获取与失去焦点事件
- AcWing 224. 计算器 (BSGS算法)打卡
- linux日常---1、linux下安装、查看、卸载包常用命令
- How do I force my .NET application to run as administrator?
- 国内网络安装ubuntu软件慢的解决方法
- 用FastDFS一步步搭建图片服务器(单机版)
- Vue环境搭建及第一个helloWorld
- Cocos2d-x之Layer
- java jpa 实体关联