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共用。
Java——面向对象知识总结的更多相关文章
- java面向对象知识整理(一)
1.面向对象思想 概述:面向对象是相对于面向过程而言的,面向过程强调的是功能,面向对象强调的是将功能封装进对像,强调具备功能的对象. 特点:(1)符合人们思考习惯的一种思想. (2)将复杂的事情简单化 ...
- Java 面向对象知识扩展
四种权限修饰符 java有四种权限修饰符:public > protected > (default) > private public protected default pr ...
- Java基础知识➣面向对象(八)
概述 Java和C#都是面向对象语言,面向对象编程是目前高级语言习惯的编程模式,与C++编写过程编程而言,面向对象使用起来高效.灵活:面向对象的三个特征:封装.继承和多态. Java面向对象 1.类封 ...
- 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- Java基础知识_毕向东_Java基础视频教程笔记(5-10 面向对象)
06天-05-面向对象(帮助文档的制作javadoc):java文档生成命令:javadoc -d filepatn demo.java -author -version(可选)一个类中默认会有一 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- Java面向对象的封装
封装是Java面向对象的三大特性之一,通常我们是通过包管理机制同时对类进行封装,隐藏其内部实现细节,通常开发中不允许直接操作类中的成员属性,所以属性一般设置为私有权限private,类中一般会给出一些 ...
- Java面向对象的三大特征
Java面向对象的三大特征 java面向对象的三大特征:“封装.继承.多态”.更多Java技术知识,请登陆疯狂软件教育官网.微信搜索微信号:疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵. ...
随机推荐
- tensorflow报错
libcublas.so.9.0: cannot open shared object file: No such file or directory 输入命令: sudo ldconfig/usr/ ...
- [REPRINT]MySQL Indexing Explained
https://atech.blog/viaduct/mysql-indexes-primer What are Indexes? Every time your web application ru ...
- Vim默认开启语法标识功能
把syntax on加到$HOME/.vimrc文件中.
- 使用vue完成一个分页效果
基于 element-ui 分页组件实现分页效果 效果如下: 使用说明: 0.首先在头部引入需要的外部文件 1.从element官方网页中复制想要的组件代码直接放入body中 2.编写逻辑代码 3.完 ...
- mysql添加索引和sql分析
mysql索引操作 查看索引 show indexes from students; #students为表名 mysql添加索引命令 创建索引 .PRIMARY KEY(主键索引) mysql> ...
- python 反转列表的3种方式
转载自:https://blog.csdn.net/bookaswine/article/details/42468735 方式一:使用reversed()函数 a=[1,2,3,4,5,6,7,8, ...
- RabbitMQ(七)心跳控制 -- heartbeat
https://blog.csdn.net/jiao_fuyou/article/details/23186407
- java 子类对象实例化的过程
大家往往听说 子类继承了父类就有了父类中的所有的非私有的属性,但是怎么就有了父类的属性了呢 ?且听下面分解 子类对象实例化的过程: 1 从结果上来看:(继承性) 子类继承了父类以后 就获取了父类中声 ...
- Java 实例 - 连接字符串
以下实例演示了通过 "+" 操作符和StringBuffer.append() 方法来连接字符串,并比较其性能: StringConcatenate.java 文件 1 2 3 4 ...
- dcoker镜像的分层
镜像分层的好处:复用节省磁盘空间,相同的内容只需加载一份到内存 修改dockerfile之后,再次构建速度加快 docker优化: 1.尽可能地选择体积小的linux发行版,比如alpine 2.尽可 ...