总结:1.类:抽象的对象;对象:是实例化,具体化
2.面向对象就是领导者的思维;面向对象:找人帮自己买电脑;面向过程:自己去买电脑(面向过程);
3.类:类只能有方法(成员方法)和属性(成员变量);
4.写在类的方法不要加Static直接写返回值;public 返回值类型 方法名(参数列表){};
5.写在方法里面的是局部变量;在调用方法时以局部变量为主,局部变量:红色;成员变量:黄色;最终的执行结果是红色;变量的就近原则;
6.但是加上this就能解决;this是本类变量;代表的是Class car类;car类加上this后就和局部变量没有关系了;
7.实际上this就是:Car car=new Car();这里的this就是car;所以this.color就是car.color;所以不和局部变量(方法内的变量赋值)有关
8.this就是main方法里的类的实例化对象;也就是car1,ca2;Car car1=new Car();Car car2=new Car()
9.因为一个类可以被很多对象实例化如:car1,car2,car3;所以类里面的属性和方法是哪个对象调用的就属于哪个对象的;如:car1.color和ca1.gulu(黄色,四个轱辘);car2.color和
ca2.gulu(红色,二个轱辘);
所以同一个方法但结果不一样
10.方法的结果是所调用的对象所决定的(nue car1();new car2())
11.局部变量:定义在方法或者语句{},只要不是成员变量就局部变量;存在栈,随着方法的弹栈消失,不赋值不能用,没有初始值;
12.成员变量:定义在类里面;存在堆;随着对的消失二消失,也就是程序的结束,纯在时间比局部变量长,,存在堆里,有初始值;
12.只要不是基本数据类型就是引用数据类型;
13.Car car=new Car();car存的是堆里的地址;car.color="粉";通过car的地址和.color的门牌号给car赋值;就是car.color和car1.color;
14.对象.方法名();的方式进行调用方法;car1和car2是两个对象所以就算调研同一个方法;得出的值也不一样;
15.public void save(Elephant elephant){elephant.speak();}; (Elephant elephant)这里是传了一个Elephant对象过来 Elephant elephant=new Elephant();
16.方法传对象的格式:public void 方法名(对象名 自定义名){};public void save(Elephant elephant){};因为这里需要调用Elephant的方speak()方法所以这里把Elephant对象传
过来了;这里传的是实例化后的对象;因为对象才有实际值才能调用.speak()方法;(Elephant elephant)这里的elephant是名字可以随便写
17.public static void main(String[] args) {
// TODO Auto-generated method stub
//创建冰箱对象
BingXiang bx=new BingXiang();
//创建大象对象
Elephant dx=new Elephant();
//给大象赋值颜色;黄色
dx.color="黄色";
//打开冰箱
bx.open();
//把黄色大象装进去 //这里的dx是实参;Elephant elephant是形参;用dx(堆里的地址)给Elephant elephant形参赋值
bx.save(dx);//把大象对象传进去;和BingXiang类里的sava()方法的public void save(Elephant elephant)
//相呼应也就是用dx(dx.color)把(Elephant elephant)赋值了;(Elephant elephant)=dx(dx.color);
//赋值后就可以调方法;打印出来了
//sava()里面有elephant.speak()方法;因为这时传进取得dx对象的颜色是黄色;也就是堆里的elephant对象被赋值了黄色;
//因为bx是一个地址;类在堆里已经被赋值了;这里直接通过地址dx和门牌号.color就直接取出了黄色
//关闭冰箱门
bx.close();
}
18.publci void setColor(String color){this.color=color};this.color是本类的color,=color是赋的值;是main方法实例化对象调用时赋的值被传过来给this.color赋值
19.private:是私有化;被private修饰的方法和属性只能在本类中使用;其他方法(main)不能调用和访问;
20.因为被private修饰的属性和方法不能被别的类使用则需要写方法进行赋值set和调用get;给私有属性赋值,调用私有方法
21.name=n:等于this.name(this.name是成员变量的name就是private String name)=n(n是实例化对象传递过来要赋的值);
22.public void getName(){return name;}这里是哪个对象调用getName()方法就把值返回给哪个对象。
23.变量名.set(值)的方法进行private修饰后的属性赋值;
24.Person p=new Person();p.speak()因为在Person类中写好了输入语句的方法speak();所以这里直接调用就行了;如果没有写System输出语句
则需要写System.out.println(p.getName()+"..."+p.getAge()) (=p.speak);调取private修饰的属性需要:变量名.getName();
25.public boolean compare(boolean p){return this.age=p.age;}在main调用的方法是boolean flag=p.compare(p2);所以返回值是boolean型的所以这里compare()方法得用
boolean接;实际上就是:在main方法里p调用了Persong类中的compare()方法;方法中return this.age=p.age;是用来比较的返回值是boolean型;
this.age是指p.age;p.age就是p2.age(在main方法中定义了Person对象p2);通过compare方法把p2对象传到了Person类compare方法中进行比较;然后将结果false返回给main里
的p.compare()对象调用的方法中;返回值也是boolean;
this.age就是调用对象的age也就是p.age;=p.age是被比较者的age;是通过compare(Person p)传过来的(整个p对象,包含age属性);=p.age的age被传过来的p对象的age赋值并比较
26.boolean flag=p.compare(p2);//这里是调的比较方法,返回值是boolean型的所以在Person类中compare()方法返回值用boolean接;