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 ...
随机推荐
- Shell面试,笔试整理
1.经典Shell脚本面试问题:https://blog.csdn.net/hyszyl/article/details/60970307
- dos for循环
in (phone.txt) do ( 127.0.0.1 > tmp_file ) ) do ( 127.0.0.1 > tmp_file )
- hive与hbase关联
进入hbase: hbase shell 进入HIVE: hive hbase中建一张t_student_info表,添加两个列族 create 't_student_info','st1','st2 ...
- C#基础之类型和成员基础以及常量、字段、属性
首先吐糟一下今天杭州的天气,真是太热了!虽然没有妹子跟我约会,但宅在方寸大的窝里,也是烦躁不已! 接上一篇<C#基础之基本类型> 类型和成员基础 在C#中,一个类型内部可以定义多种成员:常 ...
- ubuntu搭建mediawiki
1.搭建lamp环境,lamp指的是: Linux+Apache+Mysql/MariaDB+Perl/PHP/Python (我们安装的是Linux+apache2+postgresql+php) ...
- Harry And Biological Teacher 分块 + 字符串hash
http://acm.hdu.edu.cn/showproblem.php?pid=5069 首先判断suffix和prefix最长多少可以直接暴力枚举长度然后 + hash可以立马判断是否相等,复杂 ...
- POJ 2796:Feel Good 单调栈
题目,给定一个数列,n <= 1e5 .要求找出一个区间,使得其内区间最小值 * 区间总和的值最大,要求输出区间. 首先先维护一个单调递增的栈,同时记录一个lef值表示:lef[i]表示当前栈内 ...
- Java面向对象_对象数组
今天学习了对象数组,写点东西总结一下.废话不多说,啥是对象数组呢? 对象数组的概念是这么讲的,对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组. 举个例子,使用对象数 ...
- jdbc 开启事务
package com.itheima.tx; import java.sql.Connection; import java.sql.PreparedStatement; import java.s ...
- 并发包阻塞队列之ArrayBlockingQueue
并发包阻塞队列之ArrayBlockingQueue jdk1.7.0_79 上一节中对并发包中的非阻塞队列ConcurrentLinkedQueue的入队.出队做了一个简要的分析,本文将对并发 ...