java面向对象思想2
1.主函数是一类特殊的函数,作为程序入口,可被虚拟机调用。主函数格式是固定的。
public:函数访问权限最大。
static:代表函数随着类的加载已经存在。
void:主函数没有具体返回值。
main:不是关键字,是一个特殊的单词,可被虚拟机识别。
(String[] arr):函数的参数,字符串元素的数组。arr可以改变。
虚拟机在调用主函数时,传入的是new String[0];没有元素。调用为:类.方法名();
3.什么时候使用静态?静态随着类的加载而加载。
使用静态变量:对象中有共享数据时。该数据被静态修饰。特有数据被定义非静态存在堆内存中。
使用静态函数:【当功能内部没有访问到非静态数据(对象的特有数据),该功能可定义为静态的】
例如:public void show(){System.out.print("ok")};}可加static
4.静态的应用(工具类)
每一个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装。
如果一个类中没有特有的数据,只有一些指定的方法,那么可以将该类的方法静态化。并且可以将构造私有化
使新建的对象只能通过类名访问,那么可以节省堆内存中的空间。
5.静态代码块:
static{
静态代码块执行的语句。
}
随着类的加载而【执行】,只执行一次。并优先于主函数、构造函数执行。
用于给类进行初始化。构造代码块给对象初始化。构造函数给对应对象初始化。
构造代码块:
{
构造代码块语句。
}
6.person p=new person();栈内存中main函数有 p(地址)
执行顺序:①加载person.class(类)文件加载到内存->②静态代码块执行(如果有的话)->③堆内存中空间开辟,分配地址
->④在堆内存中建立对象的特有属性,并进行默认初始化->⑤对属性进行显示初始化->⑥对对象进行构造代码块初始化。
->⑦对对象进行相应的构造函数初始化⑧将内存地址付给栈内存中的p变量。
7.非静态省略的【this.】静态省略的【类名.】
静态不访问堆内存(对象非静态)
构造函数指向堆内存中,方法存放在方法区。
8.设计模式:偏思想(解决一类问题最有效方法)
单例设计模式:解决一个类在内存中只存在一个对象。
单例设计模式2:饿汉式,懒汉式。
9.面向对象:继承,子继承父。 子extends父。
【this.本类】【super.父类】
继承:提高代码复用性,类与类产生关系多态性。
tips:必须是类与类之间有所属关系才可以继承。所属关系(is...a)
如果父类中内容子类不应该继承,那么不继承。
java中只支持单继承,不支持多继承。(一个类只能继承另一个类)
多继承带来隐患:当多个父类中定义相同功能,功能内容不相同时,会错误。
java支持多层继承(b extends a;c extends b)
使用继承体系中功能:查阅父类功能,创建子类对象使用功能。
【变量:出现非私有同名变量,用本类时加this。用父类加super。
【函数:子类出现和父类一样的函数,子类对象调用该函数,会运行子类函数的内容,如同父类函数被覆盖一样。这种情况是函数的另一个特性;重写
10.聚集: has a(子中有父)
聚合:
11.final:
1.可以修饰类,函数,变量。
2.被final修饰的类不可以继承。
3.被final修饰的方法不可以被复写,也不可以被继承
4.被final修饰的变量只能赋值一次,既可以修饰成员变量,又能修饰局部变量。加上final修饰规范为所有字母大写,多个单词组成,单词间通过_连接。
5.内部类定义在类中的局部位置时,只能访问被final修饰的局部变量。
12.抽象类:当多个类中出现相同的功能,但功能主体不同,向上抽取,只定义功能,不抽取功能主体。
1.抽象方法在抽象类中。
2.抽象方法和抽象类必须被abstract关键字修饰。
3.抽象类不可以用new创建对象,调用抽象方法没意义。
4.抽象类中方法被使用,必须由子类复写所有的抽象方法后,建立子类对象调用,【如果子类只覆盖部分抽象方法,那么子类是抽象类】
13.面向对象 接口:(like...a...)
接口:可以理解为一个特殊的抽象类。当抽象类方法都是抽象的,那么该类可以通过接口的形式来表示。
【①接口不可以创建对象,因为有抽象方法。需要被子类实现。②子类对接口中抽象方法全覆盖后,子类才可以实例化。否则子类是一个抽象类。】
③接口中都是静态常量④接口可以被类 多实现(类与接口之间是实现关系),是对多继承不支持转换形式。】
class 用于定义类。 interface 用于定义接口。
接口格式特点:
1.接口常见定义:常量(final),抽象方法
2.接口中成员有固定修饰符,成员都是public。
常量:public static final.
方法:public abstract.
14.接口中继承改为实现(implements)
15.一个类可以继承一个类同时继承多接口(只有接口间存在多继承)。
特点:接口可以被类 多实现(类与接口之间是实现关系),是对多继承不支持转换形式。
接口与接口可以多继承。
接口对外暴露规则
接口是程序的功能扩展
接口可以用来多实现。
16.基本功能定义在类中,扩展功能定义在接口中
java面向对象思想2的更多相关文章
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...
- JAVA面向对象思想理解分析
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- 薪资管理系统(Java面向对象思想)
package com.test3; import java.util.*; import java.io.*; /** * @author qingfeng * 重要思想:面向对象思想(添加员工管理 ...
- java面向对象思想1
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- Java面向对象思想解决猜拳问题
第一个面向对象的程序: 一个控制台猜拳小游戏: 第一步选择角色: 第二部选择剪刀,石头,布,与电脑进行PK: 第三部选择继续或者选择结束; 结束显示比赛的局数,以及各自赢得的分数: 设计思路 分析问题 ...
- java面向对象思想之封装
一.什么是封装 菜鸟教程对封装的解释是"在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装.隐藏起来的方法.".简单来说就 ...
- 《Head First Java》读书笔记(2) - Java面向对象思想
1.了解继承 对象继承实际上就是一种"is - a"的关系,如上图的"PantherMan is a SuperHero?",是,那么便属于继承的理解. 继承能 ...
- JAVA面向对象思想
1.面向对象的基本特征 面向对象具有三个基本特征:封装.多态.继承. 1)封装 封装指的是将对象的实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能. ...
- 浅谈Java面向对象思想
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
随机推荐
- 提升Exadata 计算节点本地IO性能
1.问题概述 某客户有一台Exadata X2-2,每个计算节点是4块普通的本地SAS硬盘做成的RAID5,然后在RAID5的本地硬盘上创建了一个文件系统来存放DSG数据同步软件,在后续的运维过程中, ...
- PAT甲级——1098 Insertion or Heap Sort (插入排序、堆排序)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90941941 1098 Insertion or Heap So ...
- 零散的JS和node.js小知识
JS的连续赋值和曾经出现的怪异情况 let a=1; let b=a=3; 如上的真实赋值过程 => a=1 => a=3 => b=3 => 一般来说,等号是从右向左赋值的 ...
- Luogu P2973 [USACO10HOL]赶小猪Driving Out the Piggi 后效性DP
有后效性的DP:$f[u]$表示到$u$的期望次数,$f[u]=\Sigma_{(u,v)} (1-\frac{p}{q})*f[v]*deg[v]$,最后答案就是$f[u]*p/q$ 刚开始$f[1 ...
- Docker从入门到实战(三)
Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...
- 使用URLRewriter实现URL重写
优点 1)隐藏真实URL,提高安全性 2)更加友好的URL,好记(看博客园就行知道啦) 3)便于搜素引擎收录 ......... 可能的缺点 使用URL重写可能导致: 1)图片路径的问题 2)CSS路 ...
- https微信分享看不到图片的坑
最近在做一个活动项目的时候一开始走的http,发现网络被劫持的特别严重,没办法,只能改走https,但是修改为https后发现在使用微信js-sdk分享的时候看不到缩略图,直接通过地址打开是可以找开图 ...
- Android ImageView的几种对图片的缩放处理 解决imageview放大图片后失真问题解决办法
我的解决办法: 1 首先设置android:layout_width=”wrap_content”和android:layout_height=”wrap_content”,否则你按比例缩放后的图片放 ...
- 微信小程序开发入门首选
推荐一本书吧,直接上图,微信开发,微信网页开发,微信小程序开发,都用得着. 推荐一本书吧,直接上图,微信开发,微信网页开发,微信小程序开发,都用得着. 推荐一本书吧,直接上图,微信开发,微信网页开发, ...
- C#访问修改符
修饰符可以指定访问的可见性,还可以指定其本质.(文章摘自<C#高级编程(第9版)>以及Microsoft) 1. 可见性修饰符 public:应用于所有类型或成员,即任何代码均可以访问该项 ...