java面向对象1-面向对象概念
面向对象概念-类与对象的关系
封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代码块
继承:方法重写-super-子类实例化过程-final-抽象类-接口
多态:
1.1 面向对象概念Object-Oriented
1.1.1 理解面向对象
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向对象是基于面向过程的
1.1.2 面向对象的特点
可以将复杂的事情简单化
将程序员从执行者转换成了指挥者
完成需求时:
先要去找具有所需的功能的对象来用。如果该对象不存在,那么创建一个具有所需功能的对象,这样简化开发并提高复用
- 开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情
- 设计的过程:其实就是在管理和维护对象之间的关系。
面向对象的特征:
- 封装(encapsulation)
- 继承(inheritance)
- 多态(polymorphism)
1.2类与对象的关系
1.2.1类与对象的定义
使用计算机语言就是不断的在描述现实生活中的事物。java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义。对象(实例)即是该类事物实实在在的个体
不同Dog对象抽象出Dog类。
1.2.2类的定义
生活中描述事物无非就是描述事物的属性和行为
如:狗有颜色,年龄等属性,有跑,叫等行为
Java中用类class来描述事物也是如此
- 现实世界中事物的属性:对应类中的成员变量
- 现实世界中事物的行为:对应类中的成员方法
定义一个类,其实就是在定义类中的成员(也就是成员变量和成员方法)
public class Dog{
public String color; //成员变量
public void eat(){...} //成员方法
}
类成员的写法:
- 成员变量:
和之前定义变量的规则一样
写在类中,成员方法的外边
- 成员方法:
和之前定义方法的规则一样
1.2.3成员变量和局部变量的区别
成员变量(目前都是实例变量):
成员变量定义在类中,作用范围是整个类
实例变量随着对象的创建而存在,随着对象消失;存在于对象所在的堆内存中
成员变量有默认初始化值(0/0.0/false/null)
局部变量:
局部变量定义在局部范围内:方法内,形参上,代码块内
局部变量存在于栈内存中
方法或者语句执行完,变量空间自动释放
局部变量没有默认初始化值,除了形参,使用之前必须赋值
1.2.4创建对象,使用对象
类定义:
//类定义
class Car{
int year;String color;
public void run(){
System.out.println(“车在跑...”);
}
public void turnTo(String direction){
System.out.println(“转向:”+direction);
}
}
类使用:
public class CarDemo{ //想要运行main方法,专门放入一个测试类中
public static void main(String[] args){
Car c = new Car();//建立对象
c.color = "black";
c.run();//调用对象的方法
}
}
1.2.5对象的内存结构
一个对象的内存结构
重点:
1.方法区的概念
2.成员变量的初始化
两个变量指向一个对象的内存结构
重点:多个变量指向同一个对象(多对一关系)
同类两个对象的内存结构
重点:方法的共用
1.2.6匿名对象
匿名对象是对象的简化形式
匿名对象两种使用情况:
1.对象方法仅进行一次调用时,多次调用不适合
2.匿名对象可以作为实际参数进行传递(可作参)
3.作为返回值返回
使用匿名对象的好处:
1.简化写法,不必定义变量接住对象引用
2.对象用完之后就变成垃圾内存,可以被垃圾回收器回收
最新文章
- extern ";c";用法解析
- 将plist文件读取成为数组
- 【读书笔记《Bootstrap 实战》】4.企业网站
- mysql 5.7配置文件参数详解
- Hadoop安装lzo实验
- 比特(bit)与字节(byte)区别,站位比较
- Linux&;shell之高级Shell脚本编程-创建函数
- 添加网页ico
- 刚体Collider包围测试
- Python 类的一些BIF
- 标签栏控制器(UITabBarController)
- NSAutoReleasePool
- Missing artifact com.sun:tools:jar:1.5.0的解决方案
- android常用的快捷键
- JavaScript效果之选项卡
- jQuery MVC 科室异步联动
- 控制成本,控制成本知识点,挣值和实际成本、EAC,ETC.TCPI解析表
- Understanding How Graal Works - a Java JIT Compiler Written in Java
- 力扣(LeetCode) 509. 斐波那契数
- tensorflow-可视化
热门文章
- CentOS mysql安装
- Java学习之==>;IO文件操作体系
- Jmeter之乱码 (三)
- tomcat gc和内存
- cocos2dx[3.2](3) 浅析CCDeprecated.h
- selenium:css_selector定位详解
- dos2unix Linux解决编写脚本出现“%0D
- IDEA github 上传项目, 拉取, 删除
- Linux MFS分布式文件系统介绍和安装
- c++primer chapter one