<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();
    }
}

 

posted @ 2018-01-21 21:29  让优秀成为一种习惯  阅读(155)  评论(0编辑  收藏  举报