什么是类和对象?
类:类就是我们经常看见的class关键字,类有一点抽象,因为它具体的内容是需要通过对象来实现的。
对象:对象是类的一个实例。
例子:
类 等于 蓝图 对象 等于 蓝图的最终产物
比如说:手机
-
首先肯定现有蓝图(类)
-
然后才有蓝图的最终产物(对象)
这也代表二者缺一不可
类(class)
-
类的创建
class 类名称{
成员变量
成员方法
}
-
类的内部结构:
-
成员变量
-
成员方法
-
成员变量
成员变量其实就是普通的变量,但是我们不会立刻取赋值。
格式:变量类型 变量名称;
成员方法(后面深入讲解)
成员方法是一个封装起来的功能。
目前格式:
public void 方法名称(){
//具体的代码...
}
对象
-
对象的结构:
-
导包:关键字 import 包名称.类名称;
什么是导包?
导包就是把你要用的类的路径拿过来。
如果类和对象在同一个包下,则可以省略导包
-
创建
类名称 对象名 = new 类名称();
-
使用
-
成员变量
对象名.成员变量名;
赋值:
对象名.成员变量名 = 数据值;
-
成员方法
对象名.成员方法名();
-
-
代码演示
//1.导包:不需要,因为在同一个包下
public class main {
public static void main(String[] args) {
// 2.创建:类名称 对象名 = new 类名称();
Person person = new Person();
/*
使用:
- 成员变量
对象名.成员变量名;
赋值:
对象名.成员变量名 = 数据值;
- 成员方法
对象名.成员方法名();
*/
String name = person.name;
System.out.println(name);
//或者
System.out.println(person.name);
/*
赋值:
对象名.成员变量名 = 数据值;
*/
person.name = "茶仙°";
System.out.println(person.name);
person.age = 1;
/*
- 成员方法
对象名.成员方法名();
*/
person.show();
}
}
class Person{
/*
成员变量
格式:变量类型 变量名称;
*/
String name;
int age;
/*
成员方法
格式:
public void 方法名称(){
• //具体的代码...
}
*/
public void show(){
System.out.println("我叫:" + name + ",我" + age + "岁了");
}
}
注意事项
每new一次对象就代表创建了一次对象,每一个对象都是独立的。
例子:
//1.导包:不需要,因为在同一个包下
public class main{
public static void main(String[] args){
//2.创建对象
Person person = new Person();//创建了一个对象
Person person2 = new Person();//创建了两个对象
Person person3 = new Person();//创建了三个对象
Person person4 = new Person();//创建了四个对象
Person person5 = new Person();//创建了五个对象
}
}
class Person{
//创建成员变量
String name;
int age;
//创建成员方法
public void show(){
System.out.println("我叫"+name+",我"+age+"岁了");
}
}成员变量也可以是对象,或者数组。
class Animal{
//成员变量
String name;
int age;
String color;
}
class dog{
//成员变量
String name;
int age;
//成员类
Animal ani;
//成员数组
int[] arr;
}
成员方法(方法)
什么是成员方法?
成员方法也可以叫做方法,方法是一个封装的功能,我们可以通过调用来使用。
-
方法的好处:当我们需要重复写一些功能的时候,这时候把功能写到方法里,之后只要调用就行,不需要重复的写功能。
-
成员方法完整定义格式
修饰符(public) 返回值类型 方法名称(参数类型 参数名称){
//具体的功能
return 返回值;
}
-
解析
-
修饰符:权限的大小(后面细讲)
-
返回值类型:代表方法有没有返回值,如果方法没有:void,并且return和返回值不需要写。
-
方法名称:取一个名字给方法
-
参数类型和参数名称:方法内部功能需要的材料,我们也把:参数类型和参数名称称为“ 参数列表 ”
-
return:
作用一:结束方法
作用二: 把返回值还给调用处
【调用处】:调用方法的代码,并且调用方法的代码需要创建一个变量来接收返回值。
-
返回值:具体功能的最终结果。
-
-
创建方法的三要素
-
返回值类型
-
方法名称
-
参数列表
-
-
解析代码
class Person{
//成员变量
String name;
int age;
//成员方法
public void show(){
System.out.println("我叫"+name+",我"+age+"岁了");
}
}-
三要素:
-
返回值类型:void(代表没有)
-
方法名称:show
-
参数列表:没有
-
-
-
方法比较
-
有返回值类型和没有返回值类型
public class main {
public static void main(String[] args) {
main main = new main();
//调用方法的时候需要【接收】
//有返回值类型,接收:int sum = main.sum();
int sum = main.sum();
//没有返回值类型,传入参数:int sum = main.sum(1,1);
main.sum2(1,2);
}
/*
创建方法的三要素:
返回值类型:int
方法名称:sum
参数列表:int a, int b
*/
//有返回值类型
public int sum(){
int result = 1 + 1;
return result;
}
/*
创建方法的三要素:
返回值类型:void
方法名称:sum2
参数列表:没有
*/
//没有返回值类型
public void sum2(){
int result = 2 + 2;
System.out.println(result);
}
} -
有参数和没参数
public class main {
public static void main(String[] args) {
main main = new main();
//调用方法的时候需要【接收】和【传入参数】
//有参数
int resultOfSum = main.sum(1,1);
System.out.println("结果" + myNameIs);
/*
接收:int resultOfSum = main.sum();
传入参数:int resultOfSum = main.sum(1,1);
*/
//没参数
System.out.println("结果:"+main.sum2());
}
/*
创建方法的三要素:
返回值类型:void
方法名称:sum
参数列表:int a, int b
*/
//有参数
public void sum(int a, int b){
int result = a + b;
return result;
}
/*
创建方法的三要素:
返回值类型:void
方法名称:sum2
参数列表:没有
*/
//没参数
public void sum2(){
int result = 2,2;
return result;
}
} -
有参数 没有返回值类型 和 没参数 有返回值类型
public class main {
public static void main(String[] args) {
main main = new main();
//调用方法的时候需要【传入参数】
//有参数 没有返回值类型
main.sum("茶仙°");
//没参数 有返回值类型
String name = main.sum2();
System.out.println("我叫"+ name);
}
/*
创建方法的三要素:
返回值类型:void
方法名称:sum
参数列表:String name
*/
public void sum(String name){
System.out.println("我叫"+name);
}
/*
创建方法的三要素:
返回值类型:String
方法名称:sum2
参数列表:没有
*/
public String sum2(){
String myName = "茶仙°2";
return myName;
}
}
-
-
方法注意事项
-
返回值要和返回值类型保持一致!
-
方法的返回值类型和参数也是可以有“类” 和 “数组”
-
方法不能嵌套
-
如果有多个参数需要用 , 来隔开。
-
递归方法
-
什么是递归方法?
递归方法就是一种方法循环,但是这种方法循环内部是需要有参数、判断和返回值。
-
递归方法代码
public class main{
public static void main(String[] args){
main main = new main();
int resultOfFactorial = main.factorial(5);
}
}
class test{
//递归方法
public int factorial(int n){//有参数
//判断
if(n == 1){
return 1
}else{
return factorial(n - 1);
}
}
}
方法重载
-
什么是方法重载?
方法重载是一个属于方法到规则,规则:同名不同参数
-
代码演示
public class main{
public static void main(String[] args){
}
public void sum(int a, int b){
int result = a+b;
System.out.println(result);
}
public void sum(int a, int b, int c){
int result = a+b+c;
System.out.println(result);
}
}
成员变量和局部变量的区别
-
定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中
-
-
默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样
什么是作用域?
作用域是代码执行的范围。
它的范围就是 {} 内部
-
代码演示
public class main{
public static void main(String[] args){
}
}
class test{
//作用域:{}
{
int num = 1;
public void showNum(){
System.out.println(num);
}
}
//System.out.println(num);
} -