JAVA基础_面向对象
JAVA学习_面向对象OOP
学习4.0
思路
1、java类及类的成员:属性、方法、构造器;代码块、内部类
2、面向对象的三大特征:封装、继承、多态
3、其他关键字:
类学习1
属性=成员变量=field=域、
方法=成员函数=method
类和对象的创建
分三步:
创建类;
类的实例化;
调用对象的结构(对象.方法)
1、属性 vs 局部变量
相同点:都是变量
不同点:在类中声明的位置不同; 关于权限修饰符的不同; 默认初始化的值; 在内存中加载的位置
属性---直接定义在类的一对{}内; 可以在声明属性时指明; 都有默认初始化值(调用时赋值即可);
局部变量---声明在方法内; 不可以使用权限修饰符; 没有默认初始化值(所以要先赋值)
常用的权限修饰符:private\ public\ 缺省\ protected \
2、类中方法的声明和使用
声明:权限修饰符 返回值类型 方法名(){ 方法体 }
若方法有返回值,则必须在方法声明时,指定返回值的类型,且必须使用return 关键字;
若方法没有返回值,用void表示,可以不用return,如果使用的话,可以用“return;”
定义方法时需不需要返回值? 看要求、经验
定义方法时要不要形参? 看要求、具体分析
方法的使用中,可以调用当前类的属性或方法;
特殊的,方法A中调用方法A-------递归;
方法中不能定义别的方法;
3、return 关键字
使用范围:在方法体中
作用:结束方法 ;针对有返回值的,可返回数据; 后面不可以有执行语句
4、练习
引用类型的变量,只可能存储两类值:null或地址
学习5.0
类学习2
匿名对象
匿名对象的使用:new一个对象,不给它赋一个变量名; 一次性对象;
定义数组的工具类
工具类封装
方法的学习
方法的重载(overload)
定义:在同一个类中,允许存在一个以上的重载方法(即相同方法名),只要参数个数或类型不同即可;
同名不同参
可变个数的形参
允许直接定义能和多个实参相匹配的形参
格式:数据类型…变量名; 例:public void show(String ... strs){ }
调用时传入参数个数可以随便定,像数组一样调
可变个数形参的方法名与方法名相同,参数不同的方法之间构成重载;
与public void show(String[] strs){ }
不能互存,
必须声明在末尾,例:public void show(int i, String ... strs){ }
,(即可变个数的参数要放在最后,且只能有一个)
方法参数的值传递机制
关于变量的赋值:
如果变量是基本数据类型,此时赋值的是变量所保存的数据值
如果变量是引用数据类型此时赋值的是变量所保存的数据的地址值
形参:方法定义时,声明的小括号内的参数
实参:方法调用时,实际传给形参的数据
值传递机制
1、针对基本数据类型
实参赋给形参的是实参真实存储的数据值
2、针对引用数据类型
实参给形参的是地址值,所以修改形参也会修改实参
递归方法
一个方法内调用它自身
练习:菲波那切数列; 汉诺塔问题; 快排问题
封装和隐藏
封装性的体现:
1、将累的属性xxx私有化(priavte),提供公共的(public)方法类设置(setXxx)和获取(getXxx)
public int getAge()
{
return age;
}
public void setAge(int a)
{
age=a;
}
2、不对外暴露的私有的方法
3、单例模式…
封装性的体现需要权限修饰符的配合
四种权限
private 类内部可用
缺省 类,同一个包可用
protectde 类,同一个包,不同包的子类可用
public 类,同一个包,不同包的子类,同一个工程内(不同包非子类)可用
四种权限度可以修饰类的内部结构
修饰类的话,只可以用:缺省、public
类学习3 —构造器
1、创造对象
2、给对象初始化
3、给对象赋值
如果没有显示定义类的构造器,则默认是空参构造器
格式:权限修饰符 类名(形参){ }
一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器
例子:
public class TriAngleTest {
public static void main(String[] args) {
TriAngle t1=new TriAngle();
t1.setbase(2.0);
t1.setheight(3.0);
System.out.println("base="+t1.getbase()+"\theight="+t1.getheight());
TriAngle t2=new TriAngle(4.5,6.0);
System.out.println("base="+t2.getbase()+"\theight="+t2.getheight());
}
}
class TriAngle
{
private double base;
private double height;
public void setbase(double b)
{
base=b;
}
public double getbase()
{
return base;
}
public void setheight(double h)
{
height=h;
}
public double getheight()
{
return height;
}
//构造器
public TriAngle()
{
}
public TriAngle(double b,double h)
{
base=b;
height=h;
}
}
学习6.0
类学习4
javaBean的使用
指符合如下标准的java类
类是公共的
有一个无参的公共的构造器
有属性,且有对应的get 、 set 方法
UML类图
关键字this
1、可以用来修饰:属性、方法、构造器
2、修饰属性和方法时,this理解为:当前对象或当前正在创造的对象
在类的方法中,我们可以使用"this.属性”或“this.方法”调用当前属性或方法。但是通常可省略,只有当方法的形参和类的属性同名时,必须显示this.变量;
构造器中,也是同上,重名时显示this
3、调用修饰构造器
在累的构造器中,可以显示的使用“this(形参列表)”方式,调用类中其他的构造器; 不能调用自己
一个类中若有n个构造器,最多有n-1个使用;
规定:使用“this(形参列表)”必须放在当前构造器的首行;
package、import的使用
1、package - 包
声明类或接口所属的包, 声明在首行
属于标识符,遵循其规则规范(xxxyyyzzz)
每“.”一次,代表一次文件目录
注:同一个包下,不能命名同名的接口、类
2、import - 导入
在源文件中显示的import结构导入指定包下的类、接口
声明在包和类之间
若需导入多个结构,则并列写出即可
可以使用“xxx.*”的方式,表示导入xxx包下的所有结构
若使用的类或接口是“java.lang”包下定义的,则可以省略import 结构
若使用的是本包下定义的,则也可省略
如果在源文件中使用了不同包下的同名类,则至少有一个使用全类名的方式显示
使用“xxx.*”的方式,表示导入xxx包下的所有结构,但如果使用的是xxx的子包,则仍需使用import
import statci : 导入指定类或接口中的静态结构:属性或方法
MVC设计模式的理解
视图模型层、控制器层、与数据模型层