当前位置: 首页 > news >正文

java面向对象总结

类与对象:

类:具有相同特征的一类事物的抽象

对象:类的具体实例

类(对象)之间的关系:

关联关系:一个类的实例是另一个类中方法的参数

继承关系(一般与特殊):XX是一种XX,一个类派生出来另一个类

聚合关系(整体与部分):

实现关系:

多态:

面向对象思想

1有哪些类与对象

2类与对象有哪些属性与方法

3类与类的关系

成员变量:定义后可以初始化,若不初始化,系统自动初始化为默认值。(局部变量必须初始化后才能使用)

内存分为4部分,分别为代码区,栈(存放对象引用,局部变量),堆(存放对象,成员变量),数据段(存放静态变量及字符串常量)

基础数据类型定义的变量占一块内存(该内存空间存变量值),引用数据类型定义的变量占两块内存。

Dog d1,d2;       //栈中分配一块内存a1,a2

d1=new Dog();  //堆中分配一块内存b,a1指向b

d2=new Dog(m,n); //堆中分配一块内存c,a2指向c,c中存放成员变量

//栈中分配两块内存j,k存放构造函数的参数值m,n,将j,k赋值给c中成员变量,

  //释放栈中内存j,k

a1与a2中存放的不是物理地址,但根据存放的内容可以找到物理地址

返回值在栈中有临时的存储空间,返回完后就消失。

方法除了在内存的代码区存储外,在执行时还会占有内存,执行完方法就释放。在同一个时间同一个方法可能在执行多次

this关键词:指表示向当前对象的引用,存在于堆内存中的对象里,指向对象本身。this.成员方法/成员变量.

                  调用本类另外构造方法.this(被调用的构造方法参数)

 

static关键字:修饰变量时表示静态成员变量,属于类的公有变量,类的所有对象共享这一个变量

                  修饰方法时表示静态方法,在静态方法中不能直接访问非静态变量,非静态方法,可以通过创建对象调用。

 

super关键字:在子类中通过super引用父类对象。 super.父类成员方法/父类成员变量

                 在子类中调用父类构造方法。super(父类构造方法的参数)。(必须写在子类构造方法第一行)

 

子类的构造方法中必须调用父类构造方法,若没有显式调用父类构造方法,则默认调用父类无参构造方法。若父类中无无参构造方法,则编译出错

 

Object类:

Object类是所有类父类,若定义的一个类未说明继承哪个类,就默认继承Object类

finalize():当虚拟机回收垃圾前调用的方法。

getClass():返回已编译好的class对象。

hashCode():返回对象的哈希码(哈希码独一无二的代表了一个对象,可以通过哈希码找到该对象在内存的位置)

toString():进行String类型与其他类型数据连接时.(如System.out.println("Dog:"+d);),将自动调用toString()方法把其他类型转换为String类型 。           

            Object类的toString() 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。

              一般要在子类中重写这个方法

equals(Object obj):在Object类中,若两个对象的引用指向同一个对象,则返回true,否则返回false。

                           在String,Date等类中,若两个对象的引用指向同一个类的对象且属性相等时返回true,否则返回false

                          继承Object类后,一般要重写此方法。

“==”:用此运算符比较两个对象的引用,实际上是比较对象引用中存储的对象地址是否相同。

 

向上转型:子类对象转换为父类对象

向下转型:父类对象转换为子类对象

父类引用指向子类对象时,父类引用只能访问父类成员变量及成员方法。若子类重写了父类中的成员方法,则调用子类中已被重写过的成员方法。

 

abstract关键字:修饰类时表示抽象类,不能被实例化,必须被继承。

                       修饰方法时表示抽象方法,含有抽象方法的类必须被声明为抽象类。抽象方法只需要声明,不需要实现。但在继承的子类中必须被重写,或者子类继续声明为抽象类。

                     

final关键字:修饰的变量的值不能改变

                 修饰的方法不能被重写

                  修饰的类不能被继承

 

interface关键字(接口):是一种特殊的抽象类。接口中的所有方法不需实现,并默认为public abstract 类型。接口中的变量默认为public static final类型。

一个类可以实现多个接口,接口也可以继承其它接口。

父类接口指向子类实现,父类接口只能访问父类成员变量及子类已实现的父类成员方法。

转载于:https://www.cnblogs.com/shangshicc/p/3886982.html

相关文章:

  • Objective-C精选字符串处理方法
  • IO中同步、异步与阻塞、非阻塞的区别
  • SQL如何取日期中的年月
  • 使用百分比设置自动缩放图片的小技巧
  • [Spring Data MongoDB]学习笔记--MongoTemplate插入修改操作
  • 在必须返回一个对象时,不要去尝试返回一个引用
  • [转]十个利用矩阵乘法解决的经典题目
  • MVC过滤器基本使用
  • 类的其他特性
  • Windows环境下使用Cmake ndk编译fdk-aac
  • LightOJ - 1148 - Mad Counting
  • ubuntu里打开rar,zip文件方法
  • class 的使用
  • ViewSwitcher的功能和用法
  • 承上启下——牛腩新闻发布系统总结
  • 2017-09-12 前端日报
  • Cookie 在前端中的实践
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Laravel Telescope:优雅的应用调试工具
  • leetcode386. Lexicographical Numbers
  • Less 日常用法
  • PHP的Ev教程三(Periodic watcher)
  • Spring Boot MyBatis配置多种数据库
  • WePY 在小程序性能调优上做出的探究
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 半理解系列--Promise的进化史
  • 给初学者:JavaScript 中数组操作注意点
  • 构造函数(constructor)与原型链(prototype)关系
  • 机器学习学习笔记一
  • 跨域
  • 前端面试之CSS3新特性
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 应用生命周期终极 DevOps 工具包
  • python最赚钱的4个方向,你最心动的是哪个?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • # .NET Framework中使用命名管道进行进程间通信
  • #define,static,const,三种常量的区别
  • #传输# #传输数据判断#
  • #在 README.md 中生成项目目录结构
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (六)Hibernate的二级缓存
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三)Honghu Cloud云架构一定时调度平台
  • (数据结构)顺序表的定义
  • (转)C#调用WebService 基础
  • (转)http协议
  • .net core Swagger 过滤部分Api