目录
- 一、面向对象
- 二、类与对象
- 三、对象内存图
- 四、成员变量和局部变量区别
- 五、this关键字
- 六、构造器/构造方法
一、面向对象
一种编程思想:也就是说我们要以何种思路,解决问题,以何种形式组织代码
当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。
- 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
- 缺点:性能比面向过程低,因为类调用时需要实例化,开销比较大,比较消耗资源
面向对象,学什么?
- 学习自己如何设计对象
- 学习已有对象如何使用
二、类与对象
- 类:一组相关属性和行为的集合(抽象的),可以理解为一张用于创建对象的设计图或者蓝图
- 属性(成员变量):和定义变量的形式一样,位置不同
- 行为(成员方法):和方法类似,不过需要去掉static关键字
- 对象:是根据类创建出的一个具体的实例,一个类可以创建出多个对象
例子一:设计类
public class Student {
String name;//属性
int age;//属性
/*
* 行为
*/
public void study(){
System.out.println("学习java");
}
}
创建对象和使用对象的格式:
- 创建对格式象:类名 对象名=new 类名();
- 变量的使用格式:对象名.变量名;
- 方法的使用格式:对象名.方法名(实际参数);
例子二:创建对象和使用对象
public class Main {//在main方法中创建对象
public static void main(String[] args) {
Student s=new Student();//创建对格式象:类名 对象名=new 类名();
s.age=18;//变量的使用格式:对象名.变量名;
s.name="stef";//变量的使用格式:对象名.变量名;
System.out.println(s.age);
System.out.println(s.name);
s.study();//方法的使用格式:对象名.方法名(实际参数);
}
}
三、对象内存图
四、成员变量和局部变量区别
五、this关键字
首先this关键字是什么呢?
代表当前类对象的引用地址,也就是说通过this可以定位到当前对象
例子:
这是一个类,里面只有一个方法,用来打印this的值
public class TestThis {
/*
* 行为
*/
public void show(){
System.out.println("我是this地址"+this);
}
}
在主方法中调用类的方法并打印对象
public class Main {
public static void main(String[] args) {
TestThis test1=new TestThis();
System.out.println("我是test1对象地址"+test1);
test1.show();
TestThis test2=new TestThis();
System.out.println("我是test2对象地址"+test2);
test2.show();
}
}
运行结果:
我是test1对象地址TestThis@682a0b20
我是this地址TestThis@682a0b20
我是test2对象地址TestThis@3d075dc0
我是this地址TestThis@3d075dc0
结论:
可以看到打印test1对象和test1对象所调用对象中打印this的值一样,test2对象同理,但tes1对象和test2对象不一样。
可见:this代表当前类对象的引用地址,也就是说通过this可以定位到当前对象
六、构造器/构造方法
用于初始化一个新建的对象
构造、创造对象时,所调用的方法
构造器格式:
- 方法名与类名相同,大小写也要一致
- 没有返回值类型,连void都没有
- 没有具体的返回值(不能由return带回结果数据)
注意事项:
如果没有定义构造方法,系统将给出一个默认的无参数构造方法
如果定义了构造方法,系统将不再提供默认的构造方法
构造方法也是方法,允许重载关系出现
推荐:无参数构造方法,和带参数构造方法,都自己手动给出
构造器示例:
public class Student {
int age;
String name;
//无参构造
public Student(){
}
//有参数构造
public Student(String name,int age){
this.name=name;
this.age=age;
}
}
使用构造器创建对象示例:
Student s1=new Student();//使用无参构造器创建对象
Student s2=new Student("stef",18);//使用有参数构造器创建对象,进行初始化