/**
递归: 自己调用自己
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){
System.out.println(sum(10));
}
public static int sum(int n){
if(n == 1){
return 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 {
String name;
int age;
char gender;
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;
}
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person("华过天边", 18, '男');
p1.name = "莫小寒";
p1.age = -12;
p1.gender='男';
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;
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;
}
}
public void info(){
System.out.println("我叫:"+this.getName()+",今年"+this.getAge()+"岁。");
}
}
package Demo02;
public class Test {
public static void main(String[] args) {
Animal animal = new Animal();
Animal a1 = new Animal("熊大", 101);
a1.info();
}
}