面向对象
方法:java中,用来完成解决某件事或实现某个功能的方法
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,....){
执行语句
.....
return 返回值;
}
class 里面只有两种东西 属性和方法
① 修饰符:比较多,有对访问权限进行限定的,如:静态修饰符static 最终修饰符final;
②、返回值类型:用来限定方法返回值的数据类型(当声明没有返回值时,类型处写void);
③、参数类型:用来限定调用方法时传入参数的数据类型
④、参数名:是个变量,接收调用方法时传入的数据
⑤、return :用于结束方法以及返回方法指定类型的值(当声明没有返回值时,可省略)
⑥、返回值:被return语句返回的值,该值会返回给调用者。
1、面向对象与面向过程的区别(都是一种思维方式)
①、面向过程是执行者(自己做事情)
②、面向对象更符合我们思考习惯的思想,复杂事情简单化,从执行者变指挥者(角色发生改变)
2、类与对象:
①、类是一组相关属性和行为的集合,一个抽象的概念
②、对象是该类事物的具体
③、创建对象的格式:
类名 对象名 = new 类名();
public class Car { String color; int number; void run() { System.out.println(color + ":" + number); } } //测试类 public class CarDemo { public static void main(String[] args) { //测试:Car类中的run方法。 // 1,创建Car的对象。给对象起个名字。 Car c = new Car();// c是类类型的变量。c指向了一个具体的Car类型的对象。 // 2,通过已有的对象调用该对象的功能。格式:对象.对象成员; // 3,可以该对象的属性赋值。 c.color = "red"; c.number = 4; c.run(); } }
④、局部变量和成员变量的区别:
1:定义的位置不同:
成员变量是定义在类里面(不在方法中)
局部在(类中的)方法中或者{}语句里面的变量
2:在内存中的位置:
成员在堆内存的对象中
局部在栈内存的方法中
3:生命周期不同:
成员随着对象出现而出现在堆中,随对象消失从堆中消失(gc垃圾回收机制)
局部随着方法的运行而出现在栈中,随方法的弹栈消失
4:初始化不同:
成员在堆中,默认了初始化值
局部没有初始化默认值,手动赋值才能使用。
PM:
封装:就是一种包装。专业点叫信息隐藏 private
修饰符:public 是公共的访问 private是本类
以前通过属性赋值 ,现在用方法进行赋值 set方法赋值 get方法取值
①、好处:隐藏实现细节,提供公共访问细节,提高代码复用、安全性
②、设计原则:隐藏了不想让外界知道的细节,属性隐藏,提供公共的访问方式。
③、体现:类、方法、private修饰成员变量
private:(封装体现形式)
①、私有的意思,权限修饰符,可以修饰成员变量和成员方法;
②、特点:
被private修饰过的成员只能在本类中访问;
③、应用:
类中不需要对外提供的内容都需要私有化,包括属性和方法;
以后再描述事物,属性都私有化。
对成员变量的访问:
赋值(设置 set )、取值(获取 get)
this关键字:
在成员变量前加this 专门解决成员变量和局部变量同名问题 哪个对象调用this方法,this就代表哪个对象。
package com.oracle.Demo02; public class Peoper { private String name; private int age; //用set方法赋值 public void setName(String name){ //this专门解决成员与局部变量同名问题 this.name=name; } //用get方法取值 public String getName(){ //返回值 return return name; } public int getAge(){ return age; } public void setAge(int age){ //判定如果a大于等于0或者小于等于100 //用了this之后就无序 加判定 if..else了 /*if(age>=0&&age<=100){ }else{ age=0; }*/ this.age=age; } public void speak(){ System.out.println("我叫"+name+",今年"+age+"岁了"); } }
package com.oracle.Demo02; public class Demo01 { public static void main(String[] args) { /*Peoper p=new Peoper(); p.name="胸大"; p.age=18; p.setAge(18); p.setName("胸大"); System.out.println(p.getName()+" "+p.getAge());*/ //判断两人是否是同龄人 先new两个人出来 Peoper p1=new Peoper(); p1.setAge(18); Peoper p2=new Peoper(); p2.setAge(19); } }
私有的快捷键 Source-Generate Getters and Setters 选择 select all
褐色选择区域:快捷键工具的使用效果
//比较两人是否同龄
package com.oracle.Demo02;
public class Peoper {
private String name;
private int age;
//用set方法赋值
public void setName(String name){
//this专门解决成员与局部变量同名问题
this.name=name;
}
//用get方法取值
public String getName(){
//返回值 return
return name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
//比较两个人是否是同龄人
public boolean compare(Peoper p){
return this.age==p.age;
}
}
package com.oracle.demo02; public class Demo01 { public static void main(String[] args) { Person p1=new Person(); p1.setAge(18); Person p2=new Person(); p2.setAge(19); boolean flag=p1.compare(p2); System.out.println(flag); } }