JAVA OOP
一、java OOP
1、OOP
Object Oriented Programming(面向对象的编程)
(1)OO
程序员将某一类具有相同属性和行为的事物抽象描述出来叫做类。
(2)类
1、属性:静态特征、成员变量、全局变量
(1) 基本类型
(2) 应用类型:对象
2、行为:动态特征、方法、函数
(3)类的基本结构
public class 类名{
//属性变量
private static/final/transient/volatile 数据类型 数据名称;
......
//行为
public static/final/synchronized 返回类型 方法名称(参数列表){
方法体;
}
......
}
(4) 创建对象
1、类名 对象名 = new 构造方法(参数列表);
(1) 无参构造:参数列表为空
若类中没有定义任何构造方法,则系统自动提供无参构造;若已经定义任何构造方法,则系统不再提供无参构造,如需使用要显示申明。
(2) 带参构造:参数列表非空
(3) 构造方法:
//构造方法
public 类名做为方法名(参数列表){
方法体;
}
//无参构造
public Student(){}
//全参构造
public Student(String stuNo,String stuName,char gender,int age,String product){
this(stuNo,stuName);
this.gender=gender;
this.age=age;
this.product=product;
} //形式参数:确定类型
(4) 构造方法的功能
1)类初始化:给类的属性第一次赋值
2)构造对象对于同一个对象,只能调用一次
(5)修改和获取对象属性的值
1)修改:setter
2)获取:getter
//修改属性的值
public void setStuNo(String stuNo){
this.stuNo = stuNo;
}
//获取属性的值
public String getStuNo(){
return stuNo;
}
(6) to String()方法
用于控制台展示数据,如果一个对象添加了该方法,输出该对象时,自动调用该方法。
@Override
public String toString() {
return MessageFormat.format("学号:{0}\n姓名:{1}\n性别:{2}\n年龄:{3}\n产品:{4}",
stuNo,
stuName ,
gender,
age,
product);
}
public static void main(String[] args) {
Student stu = new Student();
//对象stu直接调用to String()方法
String s= stu.toString();
System.out.println(s);
}
(5) 访问对象的属性和行为
1、类外:
(1)对象.可见属性
(2)对象.可见方法名(参数列表)
2、类内:
(1)直接调用
2、类方法
(1)入口方法
public static void main(String[]) args{
方法体
}
(2)构造方法
public 类名(参数列表){
方法体
}
(3)toString()方法
@Override
public String toString(){
return super.toString()
}
(4)自定义方法
访问修饰符 返回类型 方法名称(参数列表){
方法体
}
举例如下:
无返回值方法
public void setStuName(String stuName){
this.stuName = stuName;
}
有返回值方法
public String getStuName(){
return stuName;
}
1、访问修饰符
2、返回类型:方法调用后返回值的类型
(1)不需要返回值:void
(2)需要返回值:值类型决定返回类型,返回类型>值类型
(3)return:方法级跳转语句
3、方法名称:与变量名称命名规则相同(驼峰命名规)
4、参数列表:
0个 | 无参 |
---|---|
1~3个 | 直接入参 |
3个以上 | 封装入参 |
5、方法参数的传递:
(1)基本类型:值传递,传递值的副本
(2)引用类型:引用传递,传递地址;引用类型传递需要new创建对象
public void test(int a){
a += 5;
System.out.println("test : " +a);
}
public void test(int[] a){
a[0] += 5;
System.out.println("test : " +a[0]);
}
public void test(A t){
t.a += 5;
System.out.println("test : " +t.a);
}
结果如下:
main1= 3
test= 8
main2=3
main1= 3
test= 8
main2= 3
main1:=3
test= 8
main2= 8
(5)方法的重载
1、在同一个类中出现方法名称相同,参数不同的现象
(1)数量相同时,类型不同
(2)类型相同时,数量不同
(3)数量和类型都相同时,类型顺序不同
public void test(int a){
a += 5;
System.out.println("test : " +a);
}
public void test(int[] a){
a[0] += 5;
System.out.println("test : " +a[0]);
}