#面向对象
##类(以学生信息录入为例)
###类的定义
—类别,具有相同的属性、特征、行为方式、功能的一类事物的概念描述,例如”学生类”;
—在JAVA中,是java程序的基本结构,每个程序必须有一个类
###与对象对比
—对象(object)是具体的事物/实例,例如具体某个学生
###关键词:class
格式:class 类名{ }
pubilic class Student{
}
—类名要求与所在文件名一致,一个.java文件中只写一个类
—类名要求首字母大写,其后的每个单词首字母大写(驼峰命名法)
###类中的内容
(1)程序入口/主方法/主函数
public static void main(String[] args) {
Student stu=new Student();
stu.name="hyx";
stu.age=18;
stu.stu_id=10086;
stu.showinf();
String n=stu.Getname();
System.out.println(n);
}
(2)属性/方法
·即用代码来描述一类事物共有的属性、行为、功能
public void showinf(){
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
System.out.println("学号:"+stu_id);
}
(3)代码块/构造方法/封装方法/静态属性/静态方法
###定义属性的方法——定义/声明/实用/赋值
*格式:属性数据类型+属性变量名
(1)定义:声明一个变量并赋值;
(2)声明:第一次创建一个新的变量;
public class Student{
int n=0;//定义
String name;//声明
}
(3)使用:单纯的使用不会改变变量的值;
(4)赋值:“=”右边的值传给左边/初始化赋值/重复使用变量赋值
n++;n=n-1;都是先使用再赋值
·属性是直接定义在类中,属性的外层只有一层大括号,外层有多层大括号的都是局部变量,且这个局部变量的使用范围就是当前使用的大括号范围内
*属性如果不赋值就会初始赋值,除了基本数据类型,其他类型声明的默认赋值 null例如
String name;
public void inName(){
String pwd;
System.out.println (name);
}
其中String name是在声明一个属性,而pwd是方法里的局部变量所以如果
直接使用,属性就会打印出null,而pwd就会报错
即*方法的局部变量 不会初始化自动赋值,且局部变量不主动赋值是不能直接使用的
·属性在这个类之外使用,需要先创建对象,然后才会在(这个对象申请的内存里)创建属性并初始化
·每个对象都有自己的一份独立存在的属性
###如何定义方法
*public 返回值类型 方法名(参数列表){方法执行代码}
(1)无参数无返回值类型
void 表示没有返回值 、不需要return 变量/数据
public void showinf(){
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
System.out.println("学号:"+stu_id);
}
(2)无参数有返回值
返回值类型:
String/int/int[] … 是什么类型 就返回值什么类型的结果
public String Getname(){
return name;
}
(3)无返回值 有参数
参数:
*空: 括号就空着
*有: 格式: 参数的数据类型 参数变量名
单个参数 (String name_in)
多个参数 (String name_in,String pwd_in)
*参数变量名,相当于方法的局部变量,只能在方法中直接使用参数变量名
*参数变量名不需要初始化赋值,因为参数变量名是方法在被调用的时候强制要求赋值给括号中
参数的,可以看作方法的数据输入
*返回值可以看作方法的结果输出
*方法就是逻辑运算结构
例如(展示多参数)
public void setInfor(String name,int stu_id){
name=name;
this.stu_id=stu_id;
}
其中变量名出现了重叠,Java是就近原则,所以两个name都是方法的局部变量,
为防止这种情况,可以改变变量名,也可以像stu_id一样加上一个this
//关于调用
public static void main(String[] args) {
String hyx="hyx"
stu1.setInfor(hyx,10086)
}
(4)有参数有返回值
public int min(int a,int b){
if(a<b){
return a;
}
return b;
}
//调用
main{
int min=stu.min(18,20);
System.out.println(min);
}
###类本身也是一种类型:
*类可以定义变量
*类名:对象变量名;// 对象变量名存储的是 new 类名();返回的对象空间的地址
Student stu=new Student();
*类可以创建对象 new 类名();// 在内存中申请一块空间 复制一份属性创建出来 返回地址
String name=new String(“Hello”);
*对象变量名,调用属性是对象的属性
*象变量名调用方法,方法中的属性就是调用者的属性
完整代码
ublic class Student {
int age;
int stu_id;
public void showinf(){
System.out.println("名字:"+name);
System.out.println("年龄:"+age);
System.out.println("学号:"+stu_id);
}
public String Getname(){
return name;
}
String name;
public void setInfor(String name1,int stu_id){
name =name1;
this.stu_id=stu_id;
}
public int min(int a,int b){
if(a<b){
return a;
}
return b;
}
public static void main(String[] args) {
Student stu=new Student();
stu.age=18;
String hyx="hyx";
stu.setInfor(hyx,10086);
System.out.println(stu.name+" "+stu.stu_id);
int min=stu.min(18,20);
System.out.println(min);
stu.showinf();
}
输出结果