Java学习记录--java面向对象的理解
来源:互联网 发布:java 文件md5校验 编辑:程序博客网 时间:2024/04/20 07:46
面向对象:当碰到问题域首先将问题的对象抽象出来,对象与对象之间的关系。
第一步:问题域有哪些类和对象
第二步:类和对象有哪些属性
第三步:类和对象之间的关系,定它们之间的方法
对象:类的具体的实例
类:一类事物的抽象
类或者对象之间的关系:
关联关系:一个类的方法里面是另外一个类的具体的某个对象,我的方法的参数是你类的对象(教授教研究生类中的某一个学生)。
继承关系(一般和特殊):(足球运动员是球类运动员的一类,球类运动员是运动员)实际的情况从许多地方继承更加复杂。
聚合关系(整体和部分):XX是XX的一部分,聚集(球队的队长)和组合(部分和整体密不可分)。
实现关系:车都有go这个方法,不同的车从车继承了go方法实现的形式不同,自行车、小汽车等等。
多态
首先定义类才能有对象,对象是java的核心
静态属性就是成员变量简称属性,动态属性就是方法或者函数
类可以看作是静态属性和方法的总和
抽象一个事物就两个方面(属性和方法)属性也需要有类型,方法考虑有没有返回值
例如:public class Dog{
Int furcolor;
Int height; 属性
Void catchmouse (mouse m) {方法
M.scream()老鼠尖叫被抓住scream是mouse中的一个方法
}
}
光有狗的概念不行,必须再定义一个狗的对象
Public static main void(string[] args){
Dog d = new dog ();定义狗的对象造一个新狗
Mouse m = new mouse();定义一只老鼠
d.catchmouse(m);狗抓老鼠
}每个类相当于一种新的类型
类中的成员变量可以初始化也可以不初始化,java会默认初始化;局部变量不会默认初始化,必须定义、赋值、使用。
基本类型:byte、short、int、long、char、float、double、boolean
内存中分配一块空间存放数值
引用类型:除过基本类型
占两块内存,一块null还没初始化,之后new定义好的类的对象,这是null会变成一个地址指向另一大块内存(堆内存)存放new出来的东西。一小块内存指向一大块内存。
构造方法(构造函数):构造方法和类名字必须一致,不能个有返回值。和new一起使用
Public class Person{
Int id;
Int age;
Person(int _id,int _age){
id=_id;
age=_age;}}构造方法
Public static void main(string[]args){
Person tom = new person(1,25);
Person john = new person(2,27);}new 的是person的构造方法
栈内存,tom是一个局部变量在栈内存中占有一块空间并有一系列的值(并不是物理地址但会指向另一个空间)
new person的时候调用构造方法,构造方法有两个值放到栈内存
方法中的变量也是局部变量在栈内存中有空间
_id 和_age里面的值是调用方法是往里面传的值
new person在堆内存中new了一个实际的对象person对象
Person对象中有两个成员变量id和age
调用方法时将栈内存的值传给堆内存中后,栈内存中的成员变量清除再给别的方法使用,此时栈内存的tom中的内容可以使我们找到堆内存中的成员变量
任何局部变量都会分配到栈内存中,方法的局部变量用完就没了
- Java学习记录--java面向对象的理解
- Java记录 -8- 理解面向对象程序设计
- JAVA学习.JAVA面向对象编程的理解&Random类
- java面向对象的理解
- 理解Java的面向对象
- JAVA面向对象的理解
- Java的面向对象理解
- Java面向对象的理解
- Java面向对象的理解
- java面向对象的理解
- java学习记录----面向对象(一)
- java学习记录----面向对象(二)
- java学习记录----面向对象(三)
- java学习记录----面向对象(四)
- java学习记录----面向对象(五)
- java学习记录----面向对象(六)
- 黑马程序员java学习日记九 面向对象的理解
- 【JAVA学习】2.面向对象理解
- POJ 1195 (Mobile phones) 二维树状数组
- 查看 php-cgi 进程数
- bzoj 1941 kd-tree求最大最小曼哈顿距离
- Eclipse配置小结
- Python入门——流程控制
- Java学习记录--java面向对象的理解
- java-BlockingQueue 使用说明
- 凸多边形最优三角剖分(polygon decomposition)
- Final and static
- python for machine-learning
- Linux系统下安装FASTDFS STORAGE AND TRACKER
- SVN 搭建文档
- ajax上传图片
- vivado下将rtl模块做成网表加入工程使用