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. ...
随机推荐
- PHP SoapClient 调用与鉴权,以及对Java和C# 的webservice的兼容处理
SoapClient使用注意事项: 第一要加上 cache_wsdl参数,以防服务器调用的是缓存的wsdl文件 然后是参数传递,如果是使用PHP自己写的WebService,参数传递按正常方式即可 1 ...
- 为什么移动构造要使用noexcept
vector::push_back操作,保证了如果过程中出现异常,vector不会发生变化. push_back过程中,可能会因为已有内存空间不够,申请新的内存,同时把原内存中已有的元素,放到新申请的 ...
- (ZT)算法杂货铺——k均值聚类(K-means)
https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...
- 系统分析与设计个人作业:WordCount
本次作业gitee地址:https://gitee.com/ackary/WordCount 一.项目简介 1.基础功能 基础功能部分主要实现的功能是统计一个程序设计语言源文件的字符数.单词数.行数, ...
- Ubuntu上部署Jenkins
1.Ubuntu上安装jdk.tomcat https://blog.csdn.net/evankaka/article/details/50463782 2.Ubuntu上配置Jenkins htt ...
- tensorflow 升级到1.9-rc0,tensorboard 报错:TypeError: GetNext() takes exactly 1 argument (2 given)
Exception in thread Reloader:Traceback (most recent call last): File "/usr/lib/python2.7/threa ...
- 小A买彩票-(组合数)
链接:https://ac.nowcoder.com/acm/contest/549/C来源:牛客网 题目描述 小A最近开始沉迷买彩票,并且希望能够通过买彩票发家致富.已知购买一张彩票需要3元,而彩票 ...
- GitLab管理之 - Gitlab 用户管理
1. 移除用户 (1) 使用管理员登陆Gitlab服务器 (2) 点击管理区域 (3) 点击Users. (4)点击[Block User] 2. 添加用户(1)用root 管理员登陆.(2)点击[管 ...
- CS通用项目系统搭建——三层架构第一天
CS通用项目:使用三层架构进行搭建 三层架构: 表现层(UI(User Interface)):展示给用户的层面,包含窗体控件数据等信息. 业务逻辑层(BLL(Business Logic Layer ...
- python 编程
1.一个str A,列表B的所有元素都在A中时返回True A = 'HeooWoldHomeUbuntuCentOSFedora'B = ['Ubuntu', 'CentOS', 'Home', ' ...