T-2-java面向对象
- 类对象的数据结构定义,方法是对象的行为。
- 类是数据类型。
- 一个类可以创建多个对象,这多个对象结构相同,数据不同。
- 类中可以包含:(1)成员变量(对象的共同特征,静的);(2)方法(对象的共同行为,动的,常常用作操作成员变量)
- 一个.java文件可以包含多个类,但是public的类只能有一个,并且这个类的名字必须和文件的名字一样,实际编码中建议一个文件只放一个类。
- 对象的产生有三种方式:(1)工厂方法;(2)构造器new;(3)依赖注入。
- 引用类型声明的变量,通常称为引用。
- new出来的对象存储在堆中。
- 创建对象时,给成员变量分配空间,并赋默认值。
- 通过引用对堆中的数据进行访问。
- 成员变量存储在堆中,局部变量存储在栈中。
- 基本类型之间,“=”是赋值;引用类型之间,“=”意味着指向同一个对象。
- 当引用类型为null时,不能做任何“.”的操作,不然运行时会提示“NullPointerException”。
- 一个类中不可以有签名完全相同的方法。
- 在一个类中,多个方法的方法名相同,参数列表不同,称为方法的重载。(跟返回值无关)
- 由编译器根据方法的签名来调用不同的方法。
- 与类同名,没有返回值,也没有返回类型。
- 在创建对象时,编译器会自动调用。
- 构造方法的作用是,初始化成员变量。
- 若自己不写构造方法,编译器给无参构造,若自己有写,编译器则不再提供。
- 构造方法(构造器)初始化对象,一般是初始化对象的数据(有时也会有算法)。
- this用于指代当前对象,谁调用指的就是谁。
- 当成员变量和局部变量重名时,需要用this关键字来指向成员变量。
- this([参数]); 用于调用本类的构造方法,如:this();
- this在运行期间,引用调用方法的对象。
- 堆中用于存储程序中所创建的对象,包含成员变量。
- 成员变量生命周期:创建对象时存在,对象被回收时消失。
- 当一个对象没有被引用时,属于被回收的范围,由垃圾回收器不定时进行回收。
- 垃圾回收过程时透明的(看不到的),若想快些,用String.gc(); 建议快些回收。
- 内存泄漏是指不再使用的对象,没有被及时回收。建议:不再被使用的对象,及时将其引用设置为null。
- 栈中用于存储所有的局部变量,基本类型直接存储的是值,引用类型存储的是地址。
- 方法调用时,在栈中开辟一个栈帧,栈帧中存储该方法的参数以及局部变量,当方法调用结束,栈帧被清除,局部变量随之消失。
- 方法区用用于存储类的相关信息,以及类中方法的定义,每个类只被装载一份。
- 父类中放子类所共有的东西,子类中放子类所特有的东西。
- 当继承发生后,子类具有父类的成员以及本类中的成员。
- java只支持单一继承。
- 继承具有传递性。
- java规定,在子类构造之前,必须先构造父类。
- 在子类构造方法中,编译器默认假如super(); 用于调用父类无参的构造。
- super(); 用于调用父类构造方法,必须位于子类构造方法中的第一句。
- 父类的引用,可以指向子类的对象,叫做向上造型。
- 访问类中的成员,是根据引用的类型,而不是对象的类型。
- 方法重写。当子类方法和父类方法的方法签名相同时,子类重写了父类的方法。
- 当重写发生时,只要和子类相关,调用的就是子类重写后的方法。
- super方法可以访问父类的方法。(注意static环境下不能使用super)
- 重写是子类重写了父类的行为,运行期间,根据对象的实际类型,调用相应的方法。
- 包package的作用:避免命名冲突。
- 建议每个类都放在对应的包中,包名所有字母小写。
- 当声明包和类后,类的全称为:包名.类名
- 为了避免繁琐,建议通过import来声明类。
- public 公有的,所有类都可以访问。
- private 私有的,只能本类访问。
- protected 受保护的,只能子类或同包可以访问。
- 没有定义修饰符,默认只能同包类可以访问。
- 访问修饰符,只能用来修饰成员变量和方法,不能用来修饰局部变量。
- static修饰成员变量,属于类,存在方法区中,只有一份,通过类名来访问。
- static修饰方法,通常用作工具方法以及工厂方法。静态方法通过类名来访问。
- static方法中,不能使用this关键字。静态方法是和对象无关的方法。
- static块,属于类的代码块,只执行一次,常用于加载静态资源。
- static方法中,只能直接访问static成员,访问非static成员,需要先new出对象。
- 静态变量是公共的,非静态变量(也叫实例变量),是属于某个对象的。
- final修饰变量,不可被改变。
- final修饰方法,不可被重写。(防止子类在定义新方法时,造成“不经意”重写)
- final修饰类,不可被继承。(可以保护类不被继承修改,控制滥用继承对系统造成的危害)
- static final 修饰的成员变量称为常量,必须声明同时初始化。
- static final 常量会在编译期被替换。
- 由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,没有方法体实现,用一个分号结尾。
- 一个类中,如果包含抽象方法,该类应该用abstract关键字声明为抽象类。
- 如果一个类继承了抽象类,必须重写其抽象方法(除非该类也声明为抽象类)。重写所有的抽象方法,子类就是一个普通的类,不重写抽象方法,子类也必须是抽象类。
- 抽象类不可以实例化。
- 即使一个类中,没有抽象方法,也可以将其定义为抽象类。(意义在于这个类不想被实例化)
- abstract和final不可以同时用于修饰一个类,因为final关键字使得类不可以继承,而abstract修饰的类如果不可以继承将没有任何意义。
- 抽象类的定义:(1)为子类提供了公共的类型。(2)封装子类中重复的内容(父类特性)。(3)可定义抽象方法,由子类用不同的方法体重写。
- 接口定义了一个标准的规范。
- 接口可以看作特殊的抽象类,其中只能包括抽象方法和常量。
- 实现类(子类)通过implements来实现接口,实现接口必须实现接口中所有的抽象方法。
- java规定,一个类可以实现多个接口,用逗号分隔,当又想继承又想实现接口时,先继承父类再实现接口。
- 接口是一种数据类型,可以向上造型:接口名 引用 = new 实现类
- 接口之间可以相互继承,使用extends关键字。
- 向上造型。(1)一个类的对象可以向上造型的类型有:a.父类的类型,b.其实现的接口类型。(2)java编译器根据类检查调用方法是否匹配。
- 强制转型。(1)可以将父类和接口看作大类型,子类看作为小类型。(2)小到大,自动向上造型;大到小,需强制类型转换。(3)强转时,看对象。(4)强转有两种情况能成功:a.对象就是那个类型;b.对象实现了那个接口。(5)强转之前,最好通过 instanceof判断,语法:if (引用 instanceof 数据类型){...}
- 多态的意义:(1)一个类型的引用在指向不同的对象时会有不同的实现。(2)同样一个对象,向上造型成不同类型时,会有不同的功能。
- 声明在类内部的类,就是内部类。使用内部类的目的,是为了封装类的定义,使得它只在类的内部有效。
- 在内部类中,可以使用Out.this来访问外部类的属性和方法。(不写的话默认有)
- 成员内部类,必须使用外部类实例来创建对象。
- 成员内部类对象可以访问外部类的属性和方法。
- 在内部类中,Outer.this与this:(1)可以省略Outer.this访问外部类的对象的属性和方法。(2)可以省略this.内部类对象的属性和方法。(3)如果不能区分外部属性和当前属性的时候,不能省略。
- 封装类的定义在方法中。
- 匿名内部类的语法“简洁”方便。
- 语法过于简洁,不容易分辨。
- 是在声明类时,同时创建了一个对象的语法现象。
- 匿名内部类,一定从父类继承(实现),一定有父类型(类,抽象类,接口)。
- 公有类:public class Foo(任何地方可以见)
- 默认类(同包类):class Foo(当前包中可见,用的不多)
- 成员内部类:在一个类内部声明(默认private)
- 匿名内部类:在方法中定义(最彻底的封装)
T-2-java面向对象的更多相关文章
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- Why Everyone Should Lift Weights
Why Everyone Should Lift Weights by James Clear I'll say it plain and simple: you should be lifting ...
- Linux 操作命令
1. Linux 概述1.1. 内核版本 从技术角度来讲, Linux只是一个系统内核,一个内核并不是一套完整的操作系统.一套完整的操作系统应该包括内核. GNU应用程序库和工具.图形桌面环境等 ...
- 快速干掉Windows Defender
1.快捷键Win+R,调出"运行"对话框,输入"gpedit.msc",打开组策略编辑器: 2.展开"计算机配置"→"管理模板&q ...
- Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)
Redis的哨兵机制中,如果是多哨兵模式,哨兵节点之间也是可以相互感知的,各种搜索之后出来的是千篇一律的一个基础配置文件,在配置当前哨兵节点的配置文件中,并没有配置其他哨兵节点的任何信息.如下是一个哨 ...
- 聊聊JMM
JMM是什么? JMM 全称 Java memory model ,直译过来就是Java内存模型,这里注意了,指到并不是JVM中的内存分布新生代.老年代.永久代这些,当然也不是 程序计数器(PC).j ...
- CSS 图像高级 径向渐变
径向渐变 径向渐变使用 radial-gradient 函数语法. 这个语法和线性渐变很类似, 可以指定渐变结束时的形状 以及它的大小. 默认来说,结束形状是一个椭圆形并且和容器的大小比例保持一致. ...
- 关于新版oracle不支持wm_concat函数的解决办法
oracle12G中不支持wm_concat,就改用:listagg(合并字段,'连接符号') within group (order by 字段) 来实现列转行
- ABAP 程序/接口调用其他程序的数据
在ABAP遇到的业务场景中,可能会遇到一种情况,需要调用其他报表的数据来发送或者二次加工,这个时候又不想对源程序做大的改动.有以下几种思路解决. 1.修改源程序,将需要展示的数据存储到DB中,然后主程 ...
- pwnable.kr-bof-witeup
根据原程序可知,输入overflowme变量覆盖key变量即可,所以接下来应该看俩变量的距离,从而构造覆盖的payload. 嗯,他们相差了52个地址,overflowme变量在低地址,存放函数的栈中 ...
- 贪吃蛇(简易版)Leslie5205912著
# include <stdio.h># include <string.h># include <windows.h># include <stdlib.h ...