<JAVA - 面向对象(一)>
01递归:
package GUIJIN_01_recursive; import java.util.Scanner; /** * 递归: * 5的前几项之和: (1~5的和) * 1+2+3+4+5=15 * 5: 5+4+3+2+1 * 4 = 5 - 1 * 3 = 4 - 1 * 2 = 3 - 1 * 1 = 2 - 1 * 0 = 1 - 1 * 找规律: * 边界: 最后可加的数是1: * * @author 韦桂金 * */ public class recursiveDemo01 { public static void main(String[] args) { //int nun = 10; Scanner input = new Scanner(System.in); System.out.println("请输入一个数字:"); int nun = input.nextInt(); System.out.println(sum(nun)); // 调用方法 传实际参数 } // 1 ~ 5的和 public static int sum(int n) { // 形参 if(n == 1) { // 如果你推演数值为1.结束方法 return 1; // 结束方法 返回1 } return sum(n-1)+n; } }
02类与对象:
package GUIJIN_Classes_and_objects; /** * 面向对象: * 面向过程和面向对象: * 面向过程:面向过程就是分析出解决问题所需要的步骤,按照这个步骤一步一步实现 * * 面向对象:面向对象是把构成程序的事物分解成各个对象(找参与者),建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题步骤中的行为 * * 对象:描述客观事物的一个实体,由一组属性和方法构成 * 类:对对象的抽象(抽出像的部分) 类别 * 先有具体的对象,然后抽象各个对象之间的地方,归纳出类别 通过类别去认识其他的对象 * * 对象中的属性:对象具体的各种特征 (基本信息 ) 名词 * 每个对象的每个属性都拥有特定值; * 例如: 天天和小原点姓名、年龄、体重,都不一样 * * 定义在类中,称为成员变量/类变量/成员属性 作用于整个类体 * 格式: * [修饰符] 属性类型 属性名 = [默认值]; 括号可省略的 * [public] String name = [null]; * * 对象中的方法:对象执行的操作 (行为) 动词 * 定义格式: * [修饰符] 方法的返回值类型 方法名(){ * java语句 * } * java中方法的参数传递:值传递 无论是基本数据类型(值的副本)和引用数据类型(值的引用) * * 总结:类是对象类型 * * 模板:把现实写到程序中去 * 所以java程序都是以类class 为组织单元 * 关键字class定义自定义的数据类型 * * 编写类模板:类是模板,是一个抽象的概念,规定了对象将会拥有的属性和方法 * 【1】使用class关键字 编写一个类型的模板 * 【2】编写类的属性 * 【3】编写类的方法 * * 使用模板: * 【1】通过类创建类的实例 * 【2】使用对象给属性赋值 * 【3】使用对象调用方法 * * 方法的重载: * 是让类以统一的方式处理不同的类型数据的一种手段 * * 多个同名函数/方法: 同时存在,具有不同的参数/个数/类型(同名不同参) * @author 韦桂金 * */ public class personDemo01 { // 【1】编写类型 // 【2】编写类的属性 String name; // 声明一个成员变量name,默认值为:null int age; // 声明一个成员变量age,默认值为:0 char gender; // 声明一个成员变量gender,默认值为:空格 // 【3】编写类的方法 public void info() { System.out.println("我叫:"+name+"\n今年:"+age+"岁,是个"+gender+"生."); } // 无参构造 public personDemo01() { // 在没有编写有参构造时,系统会默认给一个无参构造,一旦手写有参,系统就不再默认,需要在手写一个参构造 } // 有参构造 public personDemo01(String name, int age, char gender) { this.name = name; this.age = age; this.gender = gender; // this代表当前对象,可以把方法中的属性赋值给成员变量(成员属性) } // 主方法 public static void main(String[] args) { // 【1】创建对象: 类名 对象名 = new 类名(); personDemo01 sum = new personDemo01(); // 调用无参构造 personDemo01 fum = new personDemo01("晨曦",25,'女'); // 调用有参构造 // 【2】给属性赋值: 对象名.属性 = 值; sum.name = "陈潇"; sum.age = 24; sum.gender = '男'; // 【3】使用方法: 对象名.方法名(); sum.info(); fum.info(); } }
03封装:
package GUIJIN_encapsulation; /** * 程序中属性可以随意和不合理的赋值造成结果不符合要求 * 在java中的解决方案:(封装) * 封装: * 将类的某些信息隐藏在类中,不允许外部程序直接访问 * 通过该类提供方法实现对隐藏信息的操作和访问 * * 好处: * 只能通过规定方法访问数据 * 隐藏类的实现细节 * 方法加入控制语句 * 方便修改实现 * * 封装的使用步骤: * 【1】修改属性的可见性 --> 设为private:访问修饰符,只在本类中能访问到 * 【2】创建公有的getter/setter方法 -->用于属性的读写 * 【3】在getter/setter、方法中加入属性控制语句 -->对属性值的合法性进行判断 * @author 韦桂金 * */ public class Animal { // 编写类 // 编写类的成员变量 private String name; private int age; private char gender; // 私有的 // 有参构造 public Animal(String name,int age,char gender) { this.name = name; //this.age = age; this.gender = gender; setAge(age); } // 无参构造 public Animal() {} // 设置公有的取值赋值方法 public String getName() { return name; // 结束方法 } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { // 设置年龄的方法 if(age > 0&&age < 100) { // 如果年龄在这个区间返回用户输入的年龄 this.age = age; }else { System.out.println("年龄输入有误,默认给你18"); this.age = 18; // 否则默认返回18岁 } } public char getGender(){ return gender; // 结束方法 } public void setGender(char gender) { this.gender = gender; } // 编写类方法 public void info() { System.out.println("我叫:"+this.getName()+"\t,今年:"+this.getAge()+"岁了."+"我是:"+this.getGender()+"生"); } }
package GUIJIN_encapsulation; public class Test { public static void main(String[] args) { // 【1】创建对象 //Animal animal = new Animal(); Animal sum = new Animal("晓得",35,'男'); // 调用方法 sum.info(); } }