Java面向对象基础知识汇总
OOP:Orient Object Programe
AOP:Aspect Orient Programe
封装:Encapsulation
继承:Inheritance
多态:Polymorphmism
实例:Instance
数据特征:Data specialty 就是属性 :Attribute/property
行为特征:Action specialty 就是方法 :method
默认构造(系统会自动生成)和非默认构造器
(会覆盖默认构造器,所以需要进行手动添加默认构造器)
构造器的返回参数为隐藏,必须和类名一直,方法也可以与类同名,但会产警告;
静态不能调用动态的属性和方法;
1.基本类型做参数时,传递的是值,
引用类型做参数时,传递的是地址(句柄),
除了:String Byte Short Integer Long Float Double Boolean 传递的是原来的副本的句柄
2.封装:Encapsulation,属性私有,方法公有
继承:Inheritance: 继承父类的部分属性和方法;(单继承只能继承一个父类)
多态:Polymorphism:
构造器不能继承
Object 方法: clone():克隆/拷贝
equals():判断两个对象的值是否相等
notify():唤醒当前休眠的线程
notufyAll()唤醒所有的线程
getClass():返回当前对象的运行时类
toString():返回一个字符串
finalize():垃圾回收之前,必须要走的方法
hashCode():返回hash code 码
wait:让当前进程等待,阻塞
子类继承,父类派生
对象之间,类型强转,必须要求有继承关系;
super()调用父类构造器;
组合:Composite UML实心菱形 统一生存期
聚合:Aggregation UML空心菱形 非相同生存期
1.方法重载
方法重载OverLoad
在同一个类中,同时存在一个以上的同名函数,
参数个数类型不同,或者顺序不同,称为方法的重载
与方法的返回类型无关,为方法的修饰符也无关;
当我们需要去用某个方法时,只需要把参数其个方法之中,JDK会根据具体的类型方法调用,而不需要我们另外调用其他名称的方法,
2.构造器重载,所以每个类可以有多个构造器;(一个默认构造器)
构造器之间可以相互调用,利用的是this()关键字,调用本身的构造器;
(1)构造器是一个与类名同名的特殊方法;
(2)构造器的返回类型为隐藏类型,并不是说没有返回类型;
(3)每个类可以有一个或者多个构造器
(4)每个构造器可以有0个或者多个参数
(5)构造器总是伴随着new的操作符一起使用;
子类要调用默认构造器时,需要先取调用父类的默认构造器,并不是非默认构造器;
调用子类非默认构造时,也会先调用父类的默认构造器,并不是费默认构造器;
3.this关键字
this是指自己本身的意思,即表示当前对象
this的使用方法:(this关键字不可能出现在main方法中)
(1)调用本身构造器
(2)调用本身的属性和方法
(3)返回当前对象 即return this;
4.super关键字
指向父类,
super的使用方法:
(1)访问父类中的属性和方法(public)
(2) 子类构造器中没调用父类构造器; super();
注意:在Java中没有super.super();
当子类继承父类的方法后,并重写了其方法,如果想调用父类的构造器,则需要用super关键字
5.初始化块
{
.....
}
在构造器之前执行,每当实例化一个对象时,会执行初始化块;
static{
....
}
静态初始化块
在类加载时执行,而且只执行一次,和类是否实例化无关;
注意:
在Java中的代码执行顺序:
(1) 父类静态初始化块 --> (2)自身静态化块 --> (3)父类初始化块 -->(4)父类默认构造器-->(5)自身初始化块 --> (6) 自身默认构造器;
6.方法重写(Override)
子类继承父类时,如果父类的方法满足不了,子类的需求,则需要改写,称为重写或者覆盖;
具有相同的方法名、参数、返回类型,
修饰符必须要比父类的权限要低;
注意:重载和重写的比较:
(1)重载在同一个类中发生,而重写则是子类和父类之间发生,没有继承关系,没有重写
(2)重载是指参数的类型,个数和顺序不同,重写必须要求是有相同的方法名,参数,和类型,顺序也要一致;
(3)重载与返回类型无关,而重写返回类型不能改变
(4)重载与修饰符无关,而重写与修饰符有关,子类重写的方法的权限不能比父类的权限严格;
7.package:包,对所编写的代码进行分层分类,便于开发和管理
8.import: 导入所需的类
常用包: java.lang --- 包含一些Java语言的核心类:Object,
String,Math,Integer,System,Thread提供常用功能,自动导入,无需 import;
java.awt (GUI)
java.applet
java.net 网络编程;
java.io 流
java.util 常用工具类;
9.修饰符
在Eclipse中,private为正方形,default为三角形,protected为菱形,public为原型
private:只有自身可见,他人不可见
default: 在同一个包中的类可见,
protected: 继承关系的情况下,才能跨包,否则不存在跨包;
public:公有的,全可见
10.static关键字
修饰变量,方法和内部类,所修饰的这些东西,存储在静态内存区;
这些东西属于类,而不是单独的属于某个对象,即直接用类调用即可
在类加载的时候,就已经生成在静态内存区了;
static 不能修饰构造器;
静态初始化块!!!
11.final关键字
所修饰的类不能被继承,
所修饰的方法不能被重写,
所修饰的变量不能被改变
12.抽象类
含有抽象的方法的类必须为抽象类
抽象方法:有方法的定义,并没有方法实体,因为会根据子类的具体要求而实现
子类继承父类如果为抽象类,如果子类不为抽象类,则不需全部实现父类抽象方法
如果子类为抽象类,则可以不去实现父类的抽象类
而且每个类继承一个抽象类;
并且抽象类不能被实例化,但是抽象类含有构造器(默认和非默认都存在);
13.接口
接口中所用的方法都是抽象的;
接口中的所有方法都是公共的;
接口中的变量都是常量,不允许被修改;
注意:接口和抽象类之间的区别;
接口中的方法全是抽象的,而且是公共的,而抽象类中可以有一般方法,并且访问作用域可以是四种修饰符
接口中没有普通变量,都是常量,而抽象类中含有变量和常量
类和接口的是implements关系,而抽象类的关系是extends
类可以使实现多个接口,而类只能继承一个抽象类
接口可以为多继承,抽象类只能有一个父类;
14.多态
父类做参数,就增强了参数的灵活性
虚方法调用 父类指向子类
15.关键字instanceof
A instanceof B
判断 A 是否 是 B的对象吗
判断 A 是否 是 B的子类吗
Java面向对象基础知识汇总的更多相关文章
- java面向对象基础知识
一.面向对象与面向过程的区别: ①所处的角色不同:前者指挥者,后者执行者:②所需知道的事情不同:前者知道哪些是做这些事情的人就可以,不需了解具体的事情操作的过程.后者需要具备应有的技能来做这些事情. ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- PHP中oop面向对象基础知识(一)
OOP 基础知识汇总(一) &g ...
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- jquery基础知识汇总
jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...
随机推荐
- HAproxy配置文件操作
要求 1. 根据用户输入输出对应的backend下的server信息2. 可添加backend 和sever信息3. 可修改backend 和sever信息4. 可删除backend 和sever信息 ...
- 百度在线笔试编程测试题(Python):整数分解成素数的积
编程测试题: 输入一个正整数将其分解成素数的乘积,输入格式连续输入m个数,然后将这m个数分别分解,如 输入: 2 10 20 输出: 2 5 2 2 5 Python code: def primes ...
- css中左侧固定,右侧自适应
谈谈我开始出来工作时候的一道面试题吧 当初我记得在太平洋网络面试的时候,面试官给我出了这么一道题: 有一个外层的div 中间有左右两个div 要求左侧的div 1.只告诉你宽度; 2.只告 ...
- Jenkins 命令
Jenkins 服务集群环境的启动命令 #必须在root下启动 sh /home/jenkins/tomcat/bin/startup.sh dubbo服务注册中心 zookeeper启动命令 /we ...
- mysql5.7碰到的坑
日志输出时区问题 输出日志有这些信息2016-08-16T02:23:09.831827Z 112241 [Note] Aborted connection 112241 to db: 'test' ...
- JS常用正则表达式和JS控制输入框输入限制(数字、汉字、字符)
验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数 ...
- BookRent借阅管理
最近整了个BookRent的小应用,单机版.连本地sqlite db.wpf界面,其中涉及到一些有趣的小功能和小坑,简单小结一下. 项目结构是wpf ui->view model->rep ...
- C# 中 多线程同步退出方案 CancellationTokenSource
C# 中提供多线程同步退出机制,详参对象: CancellationTokenSource CancellationTokenSource 中暂未提供复位操作,因此当调用Cancle 之后,若再次调用 ...
- 在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案
在eclipse的maven插件中搜寻本地仓库中的jar搜索不到的解决方案 之前,用过maven管理项目的童鞋都知道本地会有一个${User_Home}.m2/repository仓库 是用来存放ja ...
- solaris tar 命令exclude使用
压缩时需要排除指定目录,不知道什么原因在solaris中 tar cvf a.tar a --exclude=a/b/log --exclude = a/c/mm7log不生效, 最后使用了如下方法 ...