1.面向对象
面向过程思想:把要完成的事情;分步骤完成。
例如:蒸米饭:分为四个步骤:
(1)打开电饭煲的盖子;
(2)将米饭和水放入电饭煲内;
(3)盖好锅盖;
(4)打开电源开关.
面向对象思想:正所谓物以类聚;对于要完成的事情;进行初步分类;不关心具体做什么;关心的是谁去做这件事。
例如:蒸米饭:分为两类
(1)人:打开电饭煲盖子; 放入米饭和水; 盖好锅盖; 打开电源
(2)电饭煲:进行蒸米饭
2.类与对象
类:对于同一类(具体存在的事物)共同拥有的属性和方法的定义;
类作为一个模板;可以根据类来创建这个类的具体事例;也就是对象;
对象:对象是类的实例;是具体存在的事物。
初步理解:类=属性+方法
//宠物类
public class Pet{
//成员变量;属性
String name;
int age;
String about;
//成员方法;行为;
public void say(){
System.out.println(name+"说话");
}
public void sleep(){
System.out.println(name+"睡");
}
public void run() {
System.out.println(name+"跑");
}
}
测试类:
//Pet类测试类
public class TestPet {
public static void main(String[] args) {
//创建Pet的对象dog
Pet dog=new Pet();
//属性赋值
dog.name="dog";
dog.age=10;
//使用方法
dog.say();
//创建Pet的对象cat
Pet cat=new Pet();
//属性赋值
cat.name="cat";
//使用方法
cat.run();
cat.sleep();
//name属性已经赋值为cat;输出cat
System.out.println(cat.name);
//about属性没有赋值;默认输出String的默认值null
System.out.println(cat.about);
}
}
输出
dog说话
cat跑
cat睡
cat
null
3.类中的变量
[修饰符] 类型 变量名 = [值]
从数据类型角度分:
基本类型变量: byte short int long float dobule char boolean
引用类型变量: 类 数组 接口…
按照位置划分:
成员变量
:直接被类包含。
成员变量的数据类型可以为基本类型也可以为引用类型。
可以对成员变量进行初始化赋值(不建议使用,作为公有的属性;在后续创建对象时,还是需要按照各自需求进行赋值的), 如果不初始化,创建对象时,可以调用构造方法使用默认值赋值。
成员变量在创建对象的时候会从类中复制一份到对象中。
成员变量可以被类中方法、构造方法和特定类的语句块访问。
成员变量生命周期: 由对象创建到该对象被回收时。
局部变量
:在方法(成员方法,构造方法)中 或者代码块中
局部变量在使用前必须显示的初始化赋值
局部变量生命周期: (方法被调用时),(方法运行结束 出栈)
4.类中的方法
成员方法
: (非static修饰的) 被对象调用. 完成对象的功能(行为) 定义在类中
成员方法 类的行为(动词)
访问权限修饰符 返回值类/void 方法名(参数类型 参数名){
[return 值]
};
构造方法
: 用来初始化创建出来的对象
方法名与类名相同,没有返回值,不需要void修饰。
分为无参数构造方法;有参数构造方法。
每一个类中至少有一个默认无参的构造方法,每次创建对象时至少调用一个。
如果显示的定义一个构造方法,默认的就失效了;有参数构造方法时;需要一个无参数构造方法。
//宠物类
public class Pet{
//成员变量;属性
String name;
int age;
String about;
//成员方法;行为;
public void say(){
System.out.println(name+"说话");
}
public void sleep(){
System.out.println(name+"睡");
}
public void run() {
System.out.println(name+"跑");
}
//无参数构造方法
public Pet(){
System.out.println("无参构造方法");
}
//有参数构造方法
public Pet(String a,int b){
name=a;
age=b;
System.out.println("有参构造方法");
}
}
测试类:
//Pet类测试类
public class TestPet {
public static void main(String[] args) {
//创建Pet的对象dog
Pet dog=new Pet();
//属性赋值
dog.name="dog";
dog.age=10;
//使用方法
dog.say();
//创建Pet的对象cat
Pet cat=new Pet();
//属性赋值
cat.name="cat";
//使用方法
cat.run();
cat.sleep();
//name属性已经赋值为cat;输出cat
System.out.println(cat.name);
//about属性没有赋值;默认输出String的默认值null
System.out.println(cat.about);
//创建Pet的对象rabbit
Pet rabbit=new Pet("rabbit",5);
//上述有参数构造中已经赋值;
System.out.println(rabbit.name);
System.out.println(rabbit.age);
}
}
输出
无参构造方法
dog说话
无参构造方法
cat跑
cat睡
cat
null
有参构造方法
rabbit
5
5.方法重载
方法重载:在一个类中,有相同的方法名称,但是形参不同。
规则:
方法名称必须相同;参数列表必须不同;
方法的返回值可以相同,也可以不相同;
与访问权限修饰符无关.
//宠物类
public class Pet{
//成员变量;属性
String name;
int age;
String about;
//成员方法;行为;
public void say(){
System.out.println(name+"说话");
}
public void sleep(){
System.out.println(name+"睡");
}
public void run() {
System.out.println(name+"跑");
}
//无参数构造方法
public Pet(){
System.out.println("无参构造方法");
}
//有参数构造方法
public Pet(String a,int b){
name=a;
age=b;
System.out.println("有参构造方法");
}
//方法的重载
//方法重载1
public Pet(int b,String a){
age=b;
name=a;
System.out.println("有参数构造方法");
}
//方法重载2
public Pet(String a,int b,String c){
name=a;
age=b;
about=c;
System.out.println("有参数构造方法");
}
}
面向对象(2)
对象与引用; static关键字; 代码块;包;访问权限修饰符;封装; this关键字
面向对象(3)
||继承||方法重写||类之间关系::关联,依赖||抽象类||接口||多态||向上,向下转型||final关键字||