一.面向对象编程
类:是模板,描述了一类事物的属性和功能
对象:符合类型描述的具体的个体
类和对象的关系:类是对对象的描述,对象是对类的实现
类的定义:
class 类名{
属性(变量)
功能(方法)
}
对象的生成:
类名 对象名=new 类名();
调用属性: 对象名.属性名
调用方法: 对象名.方法名()
局部变量:定义在方法中的属性
成员属性:
1.定义在类的块中
2.可以不初始化直接使用,为类型默认值
3.可以定义与成员属性同名的局部变量,并且优先使用局部变量
4.成员属性属于对象,每一个对象只有一份成员属性
示例代码:
public class ClassStu{
public static void main(String[] args){
Dog dog = new Dog();//实例化一只狗
Dog dog1 = new Dog();
dog1.name = "安倍晋三";
//dog.shout();
dog.name = "来福";
dog1.shout();
dog.age = 5;
dog.sex = '公';
dog.jump();
dog.shout();
//String name = dog.name;//取出属性
//System.out.println("这只狗叫做"+name);
}
public static void demo(){
}
}
class Dog{
String name;//null
int age;//0
char sex;//
double weight;//0.0
boolean cute;//false
public void shout(){
System.out.println("一只"+age+"岁的,叫做"+name+"的"+sex+"狗在叫,看起来有"+weight+"kg,你觉得可爱吗?"+cute);
}
public void jump(){
System.out.println(name+"在跳");
}
}
二.方法的重载
重载:让具备类似功能的方法使用相同的方法名
意义:方便程序员学习和使用api
重载的前提条件:两同三不同
两同:同一个类,使用相同的方法名
三不同:形参的个数,类型或者顺序不同
返回值类型与重载无关
重载方法的运行优先级:
1.实参与形参完全匹配的
2.需要类型转换次数少的方法
3......
注意:不能同时存在两个以上相同优先级的方法
示例代码:
public class OverLoad{
public static void main(String[] args){
sum(1,2);
}
public static int sum(int a,int b){
System.out.println("进了第一个方法");
return a + b;
}
public static double sum(int a,double b){
System.out.println("进了第二个方法");
return a + b;
}
public static double sum(double a,int b){
System.out.println("进了第三个方法");
return a + b;
}
public static double sum(double a,double b){
System.out.println("进了第四个方法");
return a + b;
}
public static int sum(int a,int b,int c){
return a+b+c;
}
}
三.递归
递归:方法调用方法自己
递归的写法:
1.循环变量定义为形参
2.设计出口(什么时候继续递归)
3.控制循环次数的形参,递增或者递减
递归:先执行的后结束
缺点:非常占用内存,因为再递归结束之前,所有方法的内存都得不到释放
尽量都使用循环解决问题,实在不行再使用递归
示例代码:
public class Recursion{
public static void main(String[] args){
demo2();
System.out.println("main方法结束");
}
public static void demo1(int count){
System.out.println("吃了第"+count+"个炸鸡");
String s = new String("123");
count++;
if(count<10000){
demo1(count);
}
//System.out.println(count);
}
public static void demo2(){
for(int i = 1;i < 10000;i++){
String s = new String("123");
System.out.println("吃了第"+i+"个炸鸡");
}
}
//求1到100的累加
public static int sum(int num){
if(num>0){
return num+sum(num-1);//100+99+98+...+1+0
}else{
return 0;
}
}
}