Java学习记录--java面向对象的理解
2017-03-14 10:37
267 查看
面向对象:当碰到问题域首先将问题的对象抽象出来,对象与对象之间的关系。
第一步:问题域有哪些类和对象
第二步:类和对象有哪些属性
第三步:类和对象之间的关系,定它们之间的方法
对象:类的具体的实例
类:一类事物的抽象
类或者对象之间的关系:
关联关系:一个类的方法里面是另外一个类的具体的某个对象,我的方法的参数是你类的对象(教授教研究
生类中的某一个学生)。
继承关系(一般和特殊):(足球运动员是球类运动员的一类,球类运动员是运动员)实际的情况从许多地方继
承更加复杂。
聚合关系(整体和部分):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中的内容可以使我们找到堆内存中的成员变量
任何局部变量都会分配到栈内存中,方法的局部变量用完就没了
第一步:问题域有哪些类和对象
第二步:类和对象有哪些属性
第三步:类和对象之间的关系,定它们之间的方法
对象:类的具体的实例
类:一类事物的抽象
类或者对象之间的关系:
关联关系:一个类的方法里面是另外一个类的具体的某个对象,我的方法的参数是你类的对象(教授教研究
生类中的某一个学生)。
继承关系(一般和特殊):(足球运动员是球类运动员的一类,球类运动员是运动员)实际的情况从许多地方继
承更加复杂。
聚合关系(整体和部分):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培训、Android培训-Java 学习过程记录_面向对象下3
- java语言面向对象笔记,在学习面向对象时应该理解掌握的原理-作者:逝秋
- 学习记录自己对java boolean 类型的理解
- 深入理解Java虚拟机 学习记录--hotSpot虚拟机对象探秘
- 大三学长带我学习JAVA.作业4.流程控制语句.续.Flow.Control.Statement.Cont 理解面向对象程序设计 学长带我学java的作业4
- 【java学习记录】3.采用面向对象的方法设计一个能对复数(Complex)进行加、减、乘法的简单运算的程序
- 【疯狂Java学习笔记】【理解面向对象】
- java学习——理解面向对象程序设计
- Java 学习基础第二章之理解面向对象
- JAVA源码学习记录3---构造函数的理解
- java入门、java学习:如何理解Java面向对象
- 深入理解Java虚拟机 学习记录--运行时数据数据区域
- Java学习之面向对象三大特征通俗理解
- 学习Java程序制作Jar、exe和安装包过程中的问题记录及理解
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下2
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象下
- Java记录 -8- 理解面向对象程序设计
- 黑马程序员Java培训、Android培训-Java 学习过程记录_面向对象上2
- 什么是面向对象与过程编程?两者有什么区别(Java学习之一)