JAVA函数、面向对象、this、重载、构造器

一、函数(方法)

@方法是一段能独立完成功能模块的代码块。可以被多次调用,提高代码的复用性

@语法:

@void代表着没有返回值

@例:

1.方法是:public static void test1()

2.方法体是:System.out.ptintln(“test1”)

3.即调用一次函数(方法),则输出一次test1

4.如图调用俩次则,输出俩次test1 ,n次调用输出n次

5.例:计算俩个整数之和

@函数(方法)为sum,n,m是形参,sum函数可以使用的俩个变量

@有返回值无法仅通过sout输出

@要用return返回输出值

 

@方法体是输出n和m之和

@调用函数会出现已构造的函数(方法)提示

@代码至此,只有计算结果,但结果并不会输出(为空)

@要引用sout输出

结果: 

@要定义数据类型,只定义变量名会报错

二、面向对象(object oriented programming)

@java是面向对象的语言

@面向对象:属性+行为(函数、方法)

@例:探究把大象装进冰箱

1.面向过程语言会这样想:打开冰箱-大象放入冰箱-关上冰箱(具体过程)

2.java面向对象会这样想:先把对象封装出来

①大象:

属性:体重,身高,性别等

方法:吃饭、走路

②冰箱:

属性:尺寸、品牌、颜色等

方法:开门、关门、制冷等

③执行过程:创建俩个对象,冰箱和大象,然后让冰箱自己开门,让大象走进冰箱,让冰箱关门

 3.优点:复用性比较高,即例如调用大象的走路方法,可以控制大象的最终目的地等

三、类

@某些具有相同属性和行为的事物抽象成一类

比如:狗是一个类,那么其他品种的狗均是这个类的对象

类似模板和样本的关系,通过一个模板可以创建多个样例

@类是抽象的概念,对象才是真正的实例

@即java文件(创建对象的模板)

1.定义类:

@类名称:首字母要大写,驼峰式

@class 类名称{

属性

方法

}

@定义Animal类

2.创建对象:

@类名 变量名 = new 类名();

@通过对象可以访问其属性和方法

①定义类之后,有了模板,就可以开始创建对象

--创建对象animal1

② 对象创建完后,需要赋值,调用原本类的方法

--5岁的狗

③赋值完后要进行输出,即获取对象的属性值

④那一次性输出anmal1,为什么得不到所有的属性值??

 

3.类的属性:

@八个基本数据类型,引用数据类型:类、接口、数组

4.类的方法

@自定义的类与对象也可以进行函数实现

@即方法名称(类 对象)

@例:判断动物是否成年

#调用

方法一:

#方法体

 (调用在main内,方法体在main外)

方法二:

(结果)

5.创建对象的内存结构

①栈:用于存储基本数据类型的值或局部变量,先进后出,存储的容量小,存储的速度快

②堆:用于存储引用的数据类型,存储的容量大,速度慢一些

③数据共享区(方法区):存储一些共享的数据(比如方法)

--对象存储在堆中,引用存储在栈中,堆中的每一个数据都是隔离的;

--每一个class加载到数据共享区,jvm会解析这个类的内容

 四、方法的重载

①定义:在同一个类中,方法的名字一样,参数列表不一样(包括参数类型)的俩个方法是重载关系,跟返回值没有关系

@相同方法名的参数不能一样

@相同方法的不同参数表现(返回值都是判断age是否大于2)

 @方法名相同的不同参数在调用时会出现提示

 @实现:

 @jdk中已存多种方法的重载

 @多层重载

public static void main(String[] args) {
     test();
     test(1);
     test(1,2);
     test("111");
    }
    public static void test(){
        System.out.println("111");
    }
    public static void test(int i){
        System.out.println("222");
    }
    public static void test(int i ,int j){
        System.out.println("333");
    }
    public static void test(String str){
        System.out.println("444");
    }

 结果:

②目的:为了节约方法的命名功能和提高代码的可读性

五、this关键字

①this只能在对象方法内使用

@在Animal类的方法内定义this

@结果也会输出动物的名字:

@这里注意是用public void 定义eat方法,而不是public static void

@这里二者等同,只是this可以不写出

②对于类的对象来说,属性是每一个对象都有一份的,是数据隔离的,但是方法是多个数据共享的

不同对象调用这个方法的时候,是用this来区分不同对象的数据

@例如定义猫和狗俩个对象,俩者共用eat()方法,但输出的结果是不一样的

③this是可隐藏的

六、构造器

①用于创建对象的方法,固定格式,给对象赋初始值

②使用new的时候,相当于调用了类里面的构造器方法

③默认构造器(无参构造器):

权限修饰符 类名(){

}

@例如:

--这里会输出俩次因为前面new了俩次

 --假如再new一个,则输出三次

④构造器本身是一个方法

1.没有返回值,也没有void

2.构造器的方法名必须和类名一致

3.在方法中要定义要初始的参数列表

⑤有参构造器:

权限修饰符 类名(数据类型 参数名){

}

@例如:

--定义一个有参构造器String name

 --调用该构造器:“”

@有参构造器也可以有多个参数

⑥构造器的快捷使用

1.右键--Generate--Constructor

2.出现可用的参数

3.ctrl+a全选/ctrl+任意组合

4.select none直接构造无参构造器 

⑦构造器之间可以互相调用

1.如果一个类存在有参构造器,那么默认的构造器(无参构造器)就会被覆盖,如果需要默认的构造器,就要显示地定义

@即有参构造器存在的情况下,无参构造器就会被动隐藏起来,不能调用

@要调用则需人为主动写出来

2.同一个类中的构造器可以互相调用,需要通过this()来调用,this()必须放在第一行

@例如:无参构造器Animal()调用有参构造器Animal(String name)

 @给有参构造器设置输出值

 

 --依据结果可以看出,在创建animal对象中,new了一个无参构造器Animal()

所以程序先走到Animal(),通过this()调用了有参构造器Animal(String name),输出“有参构造器”,再返回Animal(),输出“无参构造器”

3.在构造器中调用其他构造器,不会创建对象,只会初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kzd.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值