Java面向对象(OOP)
1.面向过程与面向对象
面向过程以函数解决问题
面向对象优先得到对象----处处皆对象
2.类和对象区别
(1)类是抽象的,对象是具体的
(2)类可以生成对象
(3)类是由对象分析特点生成一个抽象概念
3.类的组成
属性:静态特点,由变量来充当
方法:动态特点
4.由类得到对象(实例化)
5.局部变量与全局变量(属性)区别
局部变量必须声明、赋值才能操作
属性是有默认值,float-->0.0f double-->0.0d char-->'/u0000'
整形-->0 boolean--->false 引用类型-->null
6.属性隐藏
如果出现属性与局部变量冲突,采用就近原则
-----小结---- 利用数组、类、对象实现数据结构中栈--------
栈:
静态特点:
存储结构--数组
元素个数--size
动态特点:
入栈();
出栈();
7.方法重载:在同一个类中,方法名相同,参数列表(参数的个数或参数的数据类型)不一样
java编译器在编译时可以区别方法重载,成为编译多态
构造方法重载
成员方法重载
8.构造函数
类 ----构造函数------>对象
8.1构造函数只能被new关键字调用
8.2构造函数也可以重载
8.3如果类中没有提供构造函数,系统会增加一个默认的无参构造
8.4如果为类增加了构造函数,则系统不会再增加默认的无参构造
9.对象内存创建过程
1)开辟空间,取默认值
2)初始化属性
3)调用构造函数
Cat c;//此句并未在内存中开辟空间
内存分配
栈与堆区别:栈空间比较小,速度特别快,用来基本类型数据
堆空间比较大,速度较慢,用来存放引用类型数据
java中只要new一下,那么堆上面就会出现一个新对象
10方法的参数传递(值传递)
参数为基本类型的数据,操作值不会被保留
参数为引用类型的数据,操作状态会被永久保留下来
11.this关键字的用法
1)区别同名变量
2)可以在一个构造函数中调用另外一个构造函数,这句话需要
放在代码的首行
===============================================
面向对象三大特性:封装、继承、多态
两大机制:垃圾回收器、JVM机制
1.封装:为了保护对象的特点(属性、方法)
对于属性保护,要求属性写成私有的,并且提供Getter(读)/Setter(写)方法
对于方法保护,要求对于复杂功能,会拆分很多小方法,并且将小方法定义为private,
对外提供一个public的方法
对于方法的封装
class My
{
//打印输出100以内所有的素数
public void printS(){
for(int i=2;i<=100;i++){
if(isPrime(i)){
System.out.println(i);
}
}
}
private boolean isPrime(int num){
boolean flag=true;
for(int i=2;i<num;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
}
对于属性的封装
class Dice
{
private int num;
public void roll(){
//Math.random()=== [0,6) 1 2 3 4 5 6
num=(int)(Math.random()*6)+1;
}
//写
public void setNum(int num){
if(num<=0||num>6){
this.num=1;
}else{
this.num=num;
}
}
//读的方法
public int getNum(){
return this.num;
}
}
//栈修改为保存 Person
1.面向过程与面向对象
面向过程以函数解决问题
面向对象优先得到对象----处处皆对象
2.类和对象区别
(1)类是抽象的,对象是具体的
(2)类可以生成对象
(3)类是由对象分析特点生成一个抽象概念
3.类的组成
属性:静态特点,由变量来充当
方法:动态特点
4.由类得到对象(实例化)
5.局部变量与全局变量(属性)区别
局部变量必须声明、赋值才能操作
属性是有默认值,float-->0.0f double-->0.0d char-->'/u0000'
整形-->0 boolean--->false 引用类型-->null
6.属性隐藏
如果出现属性与局部变量冲突,采用就近原则
-----小结---- 利用数组、类、对象实现数据结构中栈--------
栈:
静态特点:
存储结构--数组
元素个数--size
动态特点:
入栈();
出栈();
7.方法重载:在同一个类中,方法名相同,参数列表(参数的个数或参数的数据类型)不一样
java编译器在编译时可以区别方法重载,成为编译多态
构造方法重载
成员方法重载
8.构造函数
类 ----构造函数------>对象
8.1构造函数只能被new关键字调用
8.2构造函数也可以重载
8.3如果类中没有提供构造函数,系统会增加一个默认的无参构造
8.4如果为类增加了构造函数,则系统不会再增加默认的无参构造
9.对象内存创建过程
1)开辟空间,取默认值
2)初始化属性
3)调用构造函数
Cat c;//此句并未在内存中开辟空间
内存分配
栈与堆区别:栈空间比较小,速度特别快,用来基本类型数据
堆空间比较大,速度较慢,用来存放引用类型数据
java中只要new一下,那么堆上面就会出现一个新对象
10方法的参数传递(值传递)
参数为基本类型的数据,操作值不会被保留
参数为引用类型的数据,操作状态会被永久保留下来
11.this关键字的用法
1)区别同名变量
2)可以在一个构造函数中调用另外一个构造函数,这句话需要
放在代码的首行
===============================================
面向对象三大特性:封装、继承、多态
两大机制:垃圾回收器、JVM机制
1.封装:为了保护对象的特点(属性、方法)
对于属性保护,要求属性写成私有的,并且提供Getter(读)/Setter(写)方法
对于方法保护,要求对于复杂功能,会拆分很多小方法,并且将小方法定义为private,
对外提供一个public的方法
对于方法的封装
class My
{
//打印输出100以内所有的素数
public void printS(){
for(int i=2;i<=100;i++){
if(isPrime(i)){
System.out.println(i);
}
}
}
private boolean isPrime(int num){
boolean flag=true;
for(int i=2;i<num;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
}
对于属性的封装
class Dice
{
private int num;
public void roll(){
//Math.random()=== [0,6) 1 2 3 4 5 6
num=(int)(Math.random()*6)+1;
}
//写
public void setNum(int num){
if(num<=0||num>6){
this.num=1;
}else{
this.num=num;
}
}
//读的方法
public int getNum(){
return this.num;
}
}
//栈修改为保存 Person