java_递归、面向对象1、

/**
    递归: 自己调用自己

        5的前几项之和:   1-5     5-1+5   n(n-1)+n
            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;

*/

public class DiGui
{
    public static void main(String [] args){
        //int num = 5;
        System.out.println(sum(10));  //调用方法  传实际参数
    }


    //1~5的和
    public static int sum(int n){  //形参
        if(n == 1){   //如果你推演数值为1.结束方法
            return 1;   //结束方法  返回1
        }
        return sum(n-1)+n;
    }
}

package Demo01;
/**
 * 面向对象:
 *      面向过程和面向对象:
 *              面向过程:面向过程就是分析出解决问题所需要的步骤,按照这个步骤一步一步实现
 *              面向对象:面向对象是把构成程序的事物分解成各个对象(找参与者),建立对象的目的不是为了完成一个步骤,
 *                              而是为了描述某个事物在整个解决问题的步骤中的行为
 *          
 *      对象:描述客观事物的一个实体,由一组属性和方法构成
 *      类: 对对象的抽象(抽出像的部分)   类别    
 *      先有具体的对象,然后抽象各个对象之间像的地方,归纳出类别  通过类别去认识其他对象
 *      
 *      对象中的属性:  --》对象具体的各种特征   (基本信息)  名词
 *                  每个对象的每个属性都拥有特定值;
 *                  例如:   天天和小原点姓名、年龄、体重  ...都不一样
 *                  定义在类中,称为成员变量/类变量/成员属性   作用于整个类体
 *                  格式:
 *                          [修饰符]  属性类型 属性名 = [默认值];   加括号表示是可省略的
 *                          [public]     String     name  =  [null] ; 
 *     
 *      对象中的方法: -->对象执行的操作  (行为)  动词
 *                  定义格式:
 *                          [修饰符]   方法的返回值类型   方法名(){
 *                                  java语句
 *                          }
 *     java中方法的参数传递:值传递   无论是基本数据类型(值的副本)和引用数据类型(值引用)
 *     
 *     类是对象的类型
 *     
 *     模板:把现实写到程序中去
 *              所以java程序都是以类class 为组织单元
 *              关键字class 定义自定义的数据类型
 *          
 *     编写类模板: 类是模板,是一个抽象的概念,规定了对象将会拥有的属性和方法
 *     [1]使用class关键字 编写一个类型的模板
 *     [2]编写类的属性
 *     [3]编写类的方法
 *     
 *     使用模板:
 *     【1】通过类创建类的实例
 *     【2】使用对象给属性赋值
 *     【3】使用对象调用方法
 *     
 *     
 *     方法的重载:
 *          是让类以统一的方式处理不同的类型数据的一种手段
 *     
 *      多个同名函数/方法:同时存在,具有不同的参数/个数/类型(同名不同参)
 *
 */
public class Person {   //【1】编写类型
        //【2】编写类的属性
        String name;            //声明一个成员变量name,默认值 null
        int age;                    //声明一个成员变量age,默认值 0
        char gender;            //声明一个成员变量gender,默认值  空格


    //【3】编写类的方法
    public  void info(){
        System.out.println("我叫:"+name+",今年:"+age+",是个"+gender+"性。");
    }

    //无参构造
    public Person(){     //在没有编写有参构造时,系统会默认给一个无参构造,一旦手写有参构造,系统就不再默认,需要再手写一个无参构造。

    }

    //有参构造
    public Person(String name,int age,char gender){
        this.name = name;
        this.age = age;
        this.gender = gender;
        //this:代表当前对象,可以把方法中的属性赋值给成员变量(成员属性)
    }


    //主方法(使用程序的入口)
    public static void main(String[] args) {
        //[1]创建对象--》        类名  对象名 = new 类名();
        Person p1 = new Person();
        Person p2 = new Person("华过天边", 18, '男');   

        //[2]给属性赋值   --》    对象名.属性 = 值;
        p1.name = "莫小寒";
        p1.age = -12;   
        p1.gender='男';

        //[3]使用方法   --》    对象名.方法名();
        p1.info();
        p2.info();
    }
}
package Demo02;
/**
 * 程序中属性可以随意访问和不合理的赋值造成结果不符合要求   
 *      在java中的解决方案:(封装)
 *              封装:
 *                  将类的某些信息隐藏在类中。不允许外部程序直接访问
 *                  通过该类提供方法来实现对隐藏信息的操作和访问
 * 
 *      好处:
 *              只能通过规定方法访问数据
 *              隐藏类的实现细节
 *              方法加入控制语句
 *              方便修改实现
 * 
 * 封装的使用步骤:
 *      【1】修改属性的可见性                     --》设为private :访问修饰符,只在本类中能访问到
 *      【2】创建公有的getter/setter方法                 --》用于属性的读写
 *      【3】在getter/setter、方法中加入属性控制语句           --》对属性值的合法性进行判断
 * 
 * @author Administrator
 *
 */
public class Animal {  //编写类
    //编写类的成员变量
    private String name;
    private int age;     //私有的



    public Animal(String name,int age){
        this.name = name;
        //this.age = age;
        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 void  info(){
        System.out.println("我叫:"+this.getName()+",今年"+this.getAge()+"岁。");
    }

}
package Demo02;

public class Test {
    public static void main(String[] args) {
        //[1]创建对象
        Animal animal  = new Animal();
        Animal a1 = new Animal("熊大", 101);

        //调用方法
        a1.info();

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值