07初识面向对象(对象与类的关系、构造函数、this关键字)
初识面向对象
1.万物皆对象
对象:用来描述客观事物的一个实体,由一组属性和方法构成
万物皆对象是指我们生活中,或者自然界中任何事物都可以理解为一个对象。
2.类
Java程序以class(类)为组织单元
class关键字定义自定义的数据类型,也是引用数据类型
3.类和对象的关系
类是对象的抽象,对象是类的具体
类相当于一个模板,我们可以通过模板创建N个不同的对象
对象是真真实实存在的实体
1.类的组成:
属性:一些事物共有的特征,我们称之为属性。
方法:一些事物共有的行为,我们称之为方法。
4.类和对象的创建以及对象的使用
1.创建类:
(1)先分析当前这一类事物有哪些共有的特征,分析为属性,直接写在类内部.
(2)再分析当前这一类事物有哪些共有的行为,分析为方法,直接写在类内部.
2.创建对象:
在main方法中通过new关键字来创建对象
类名 对象名 = new 类名();
3.使用对象:
访问对象的属性:对象名.属性;
访问对象的方法:对象名.方法;
5.局部变量与实例变量的区别
局部变量(方法内):要求必须先赋值再使用,否则编译错误。而实例变量没要求
实例变量(又称成员变量、属性):
(1)书写位置:直接书写在类内部
(2)存放位置:实例变量存放在堆中
(3)生命周期:随着对象的创建而生效,随着对象被垃圾回收器回收而失效。
局部变量 | 成员变量 | |
---|---|---|
定义位置 |
方法或方法内的结构当中 | 类的内部,方法的外部 |
默认值 |
无默认值 | 有默认值(与数组相同) |
使用范围 |
从定义行到包含其结构结束 | 本类有效 |
命名冲突 |
不允许重名 | 可与局部变量重名,局部变量优先 |
生命周期 |
随着方法的入栈(压栈)而生效,随着方法的出栈(弹栈)而死亡 | 随着对象的创建而生效,随着对象被垃圾回收器回收而失效。 |
6.构造方法
1.概念
构造方法是用于创建对象的,我们默认创建使用的就是无参构造方法,无参构造方法是默认存在的
如果书写了有参构造方法,那么无参构造方法将被覆盖。
如果要继续使用无参构造方法,必须显式的声明。
2.定义格式:
访问修饰符 + 类名(形参列表){}
3.构造方法重载:
同一个类中
形参列表不一致,包括参数的个数、类型、顺序。
//java中方法名可以和类名一致,但一定有返回值,且不建议这样写
//定义构造方法时也可定义不是属性的参数
this关键字的用法:
1.使用场景:
(1)访问属性,直接使用this.属性 即可
(2)访问方法,直接使用this.方法 即可
(3)访问构造方法,this(形参列表) 即可。必须在构造方法的第一句,并且只能有一个。
package com.qfedu.test2;
/**
* 无参构造方法默认存在 但是如果书写了有参构造方法 那么无参将被覆盖
* 如果想要使用无参构造 那么必须显式的书写
* this关键字
* 属性
* 方法
* 构造方法
* @author WHD
*
*/
public class Student {
String name;
int age;
String address;
String stuNo;
String idCrad;
public Student(String name , int age , String address) {
this(name);
this.address = address;
this.age = age;
}
public Student(String name,int age,String address,String stuNo ,String idCard) {
this(name, age, address);
this.stuNo = stuNo;
this.idCrad = idCard;
}
public Student(String name) {
this.name = name;
}
public Student(int age) {
this.age = age;
}
public Student(String address,String name) {
this.address = address;
this.name = name;
}
public void printName() {
System.out.println("学生的名字是" + name);
}
public void printAge() {
System.out.println("学生的年龄是" + age);
}
public void printAddress() {
System.out.println("学生的地址是" + address);
}
/**
* 当前方法用于打印所有的学生信息
*/
public void printInfo() {
printAddress();
this.printAge();
this.printName();
}
public Student() {}
public static void main(String[] args) {
// 无参构造方法默认存在 但是如果书写了有参构造方法 那么无参将被覆盖
// 如果想要使用无参构造 那么必须显式的书写
// Student stu1 = new Student();
// stu1.name = "赵四";
// stu1.age = 17;
// stu1.address = "象牙山";
@SuppressWarnings("unused")
Student stu2 = new Student("广坤", 17, "象牙山", "zz2356", "410235645789");
}
}
每日问题
1.类和对象什么关系
2.什么是属性和方法
3.普通方法的定义格式
4.什么是形参,什么是实参
5.怎样创建对象
6.怎样访问对象的属性和方法
7.本类中的方法可以互相调用吗
8.main方法能直接访问对象的属性和方法吗
9.你怎么理解万物皆对象
10.局部变量和实例变量的区别
11.构造方法重载的要求
12.this关键字可以访问那些内容,如何访问?
解答
1.类和对象什么关系
类是对象的抽象
对象是类的具体
2.什么是属性和方法
属性是对象共有的特征
方法是对象共有的行为
3.普通方法的定义格式
访问修饰符 + 返回值类型 + 方法名称
4.什么是形参,什么是实参
形参:定义方法的时候定义的参数,只有定义,相当于局部变量
实参:实际传入的值
5.怎样创建对象
类名 对象名 = new 类名();
6.怎样访问对象的属性和方法
对象名+ . 访问属性和方法
7.本类中的方法可以互相调用吗
可以互相调用
8.main方法能直接访问对象的属性和方法吗
不能直接访问,必须先创建对象,静态方法不能直接访问非静态的属性和方法
9.你怎么理解万物皆对象
一切事物都可以看做是对象,可以分析出特征和行为
10.局部变量和实例变量的区别
局部变量:定义在方法中,只在本方法中生效,局部变量基本数据类型在栈中,没有默
认值
实例变量:属性,直接定义在类中,本类中都可以访问,有默认值,跟数组一致
11.构造方法重载的要求
形参列表不一致(个数、类型、顺序)
12.this关键字可以访问那些内容,如何访问
属性,直接加点访问 this.属性名
方法 同上 this.方法名
构造方法 this(形参列表)
本文地址:https://blog.csdn.net/zitian246/article/details/107674573
推荐阅读
-
python学习笔记:第17天 面向对象03 类与类之间的关系
-
net学习之类与对象、new关键字、构造函数、常量和只读变量、枚举、结构、垃圾回收、静态成员、静态类等
-
07初识面向对象(对象与类的关系、构造函数、this关键字)
-
构造函数与实例对象和原型对象三者间的关系
-
关于PHP面向对象中—类的定义与对象的实例化操作以及构造、析构函数的特殊用法 - WORSHIP亚萨
-
net学习之类与对象、new关键字、构造函数、常量和只读变量、枚举、结构、垃圾回收、静态成员、静态类等
-
类与对象以及构造方法的理解 面向对象类对象构造方法重载
-
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象_javascript技巧
-
JAVA 面向对象(继承,向上/下转型,子类调用父类的构造函数)
-
ES6的“类”与面向对象的关系