第五篇 黑马程序员-函数、类与对象

------- android培训java培训、期待与您交流! ---------

一.
如何定义一个函数呢?
1.既然函数是一个独立的功能,那么该功能的运算结果是什么先明确
因为这是在明确函数的返回值类型
2.再明确在定义该功能的过程中是否需要未知的内容参与运算
因为是在明确函数的参数列表(参数的类型和参数的个数)
小结:
方法返回值为void的时候不要写输出语句,直接调用就可以了。
方法里面只定义本方法要操作的功能,不要在定义其他的功能。
什么时候用重载呢?
当定义的功能相同,但是参与运算的未知内容不同
那么,这时候就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数
重载里面的参数是有顺序的。重载和返回值类型没关系,重载中只要方法名相同,然后参数类型和参数
个数只要有一方不同它就重载了。
面向对象
将复杂的事物变得简单化
类与对象
类就是对现实生活中事物的描述,对象就是实实在在存在的个体。
匿名对象
匿名对象两种使用情况
当对对象方法仅进行一次调用的时候
匿名对象可以作为实际参数进行传递
只所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句
对访问的数据进行操作,提高代码的健壮性
封装原则:
将不需要对外提供的内容都隐藏,提供公共方法对其访问,隐藏的最低权限是
private.
对外提供的方法用get和set
set方法一般都是void,因为设置了不需要返回且set一般都带参数
而get没有参数。且其返回类型跟它获取的变量一致,你如果看到某个类里
有setxxx或getxxx,那么这个类里一定有私有的属性xxx,
抽象类和方法的特点:
1.抽象方法一定定义在抽象类中
2.抽象方法和抽象类都必须被abstract修饰
3.抽象类不可以用new创建对象,因为调用抽象方法没意义
4.抽象类中的方法要被使用,必须由子类复写所有的抽象方法后,建立子类对象调用。
小结:
如果子类只覆盖了部分抽象方法。那么该子类还是一个抽象类。
抽象类和一般类没太大不同,该怎么描述事物就如何描述,只不过该事务中出现了不确定的部分,
这些部分也是该事物的功能,需要明确出现,但是无法定义主体。通过抽象方法来表示。
抽象类比一般类多了个抽象函数,就是在类中可以定义抽象方法,抽象类中也可以不定义抽象方法,它的
作用是不要该类建立对象。
内部类:
内部类的特点:
内部类可以直接访问外部类中的成员,包括私有成员
原因:之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,
格式:外部类名.this
外部类要访问内部类中的成员必须要建立内部类的对象。
当内部类定义在外部类的的成员位置上时,而且非私有,可以在外部其他类中
可以直接建立内部类对象:
格式:
外部类名.内部类名  变量名=外部类对象.内部类对象;
构造函数的特点:
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
作用:
给对象进行初始化
注意:
1.默认构造函数的特点
2.多个构造函数是以重载的形式存在的
对象一建立就会调用与之对应的构造函数
构造函数的作用可以用于给对象进行初始化
构造函数的小细节:
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的
当在类中自定义了一个构造函数后,默认的构造函数就没有了。
一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。
构造代码块需要注意的地方:
作用:给对象进行初始化
对象已建立就运行,而且优先于构造函数执行
构造代码块是给所有对象进行统一初始化
构造代码块中定义的是不同对象共性的初始化内容
二.
类与对象的关系
类就是对现实生活中事物的描述,对象就是这类事物实实在在存在的个体
举例:
现实生活中的对象:张三,李四
想要描述:提取对象中共性的内容,对具体对象的抽象
描述时,这些对象的共性有:姓名,年龄,性别,学习Java的功能
这个描述在Java中是用类表示,而这个对象就是在Java中用new操作符所产生的一个实体,这个实体在堆内
存当中,把这些东西映射到内存里的话一个是类,一个就是实体。
描述事物无非就是两部分,一部分就是事物的属性,另一部分就是事物的行为
属性对应类中的变量,行为对应类中的方法
其实定义类就是在描述事物,就是再定义属性和行为,属性和行为称为类中的成员(成员变量和成员函数)

举例:
人开门(名词提炼法):


    开门(门)
    {
         门.开();
    }

 



     开(){操作门轴等。}


三.
面向对像的三个特征:封装,继承,多态
以后的开发其实就是找对象使用,没有对象就创建个对象
简单来说就是找对象,建立对象,使用对象,维护对象的关系
成员变量和局部变量:
成员变量作用于整个类中,局部变量作用于函数中,或者语句中
在内存中的位置:
成:在堆内存。因为对象的存在,才在内存中存在
局:存在栈内存中.
数据类型分为两种:1.基本数据类型  2.引用数据类型(数组引用,类引用,接口引用)
堆内存中的变量都有一个特点,那就是默认初始化值。那就是null.
匿名对象使用方式一:当对对象的方法只调用一次时,可以用它来写,这样比较简化,如果
对一个对象进行多个成员调用,必须给这个对象起个名字。
静态代码块:
格式:
static{
   静态代码快中的执行语句
   {
 特点:
1.随着类的加载而执行 只执行一次,并优先于主函数
2.用于给类进行初始化的
注意:静态代码块是给类初始化的,构造代码块是给对象初始化的。
private:私有权限修饰符,用于修饰类中的成员(成员变量,成员函数)。
注意:私有只在本类中有效。
四.
分析以下代码:
class Person
{
   private String name="hah";
   private int age;
   private static String country="CN";
   Person(String name,int age)
   {
            this.name=name;
            this.age=age;
    }
    {
             System.out.println(name+".."+age);      
    }
    public void setName(String name)
    {
             this.name=name;
    }
   
    public void speak()
    {
             System.out.println(this.name+":::"+this.age);
    }
   
    public static void showCountry()
    {
             System.out.println("country="+country);
    }
}

class PersonDemo
{
    public static void main(String[] args)
    {
                Person p=new Person("zhangsan",20);
    }
}
1.通过分析以上代码总结几点需要注意的地方:
2.将age私有化以后,类以外即使建立了对象也不能直接访问了
3.人应该有年龄,就需要提供对应的访问方式
4.私有仅仅是封装的一种表现形式
5.之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句
6.当分析事物时,该事物具备一些特殊行为,那么将这些内容定义在构造函数中
7.静态是一个修饰符,用于修饰成员(成员变量和成员函数)
8.静态修饰内容被对象所共享
9.静态方法只能访问静态成员(方法和变量)
10.非静态方法既可以访问静态也可以访问非静态
11.静态方法中不可以定义this ,super关键字 ,因为静态优先于对象存在,所以静态方法中不可以出现
12.静态有利有弊
利:对对象的共享数据进行单独空间的存储  节省空间,没有必要每个对象中都存储一份
可以直接被类名调用。
弊:生命周期过长  访问出现局限性(静态虽好,只能访问静态)
对象的建立过程:
分析以上代码中的这段"Person p=new Person("zhangsan".20);"代码分析对象的建立过程:
1.因为new用到了Person.class文件,所以先找到Person.class文件并加载到内存中
2.执行该类中的static代码块,如果有的话,给Person.class类进行初始化。
3.在堆内存中开辟空间,分配内存地址
4.在堆内存中建立对象特有属性 并进行默认初始化
5.对属性进行显示初始化
6.对对象进行构造代码快初始化
7.对对象进行对应的构造函数初始化
8.将内存地址赋给栈内存中的P变量。

 

-------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值