Mars老师Android视频教程笔记,欢迎指正

一 面向对象
首先理解下面向对象的字面意思。
面向就是专门为某一目标服务的意思,比如某公司专门为那些残疾人研制假肢。
面向对象是一种思维方法。
面向对象的思维方法:
一 首先确定谁来做,其次怎么做。
二 首先确定整体,然后是局部。
三 首先考虑抽象,然后考虑具体。

二 类
1.类是什么?
类是一个具有相似内部状态和运动规律的集合。反过来也可以根据内部状态和运动规律的不同来辨别类。两种方法形可以成类:归纳法和演绎法。归纳法就是人们根据某一事物共有的特征归纳成一类,比如用来播放音乐的耳机啊,音箱啊都可以归属影音设备这一大类。类中的耳机根据不同的需要形成不同的特征,比如入耳式耳机,头戴式耳机。这些还可以在分类成不同的个体,比如入耳降噪低音或中高音耳机,这些个体就是对象。
2.类的创建方法:
类的格式:
class 类名{
类的属性=程序里面的变量
类的方法=程序里面的函数,
}
类的属性指的是类的内部状态。比如人的身高啊 体重等等。类的方法指的类的行为方式,比如人去吃饭,直立行走等等。
3.类继承
格式 :子类 extends 父类 { }
什么是继承?比如儿子继承老子的一些东西。
除了继承父类之外,子类也可以定义自己的一些成员变量和方法.extends意思是扩展,子类继承了父类之后,可以在原有的基础上进行扩展。
4.抽象类
三个原则:
1.抽象类不能生成对象。2.有抽象函数的类必须要抽象化。3.没有抽象函数的类也可以抽象化。
它的作用:当爸爸,只能被子类继承,但是继承之后呢?这个子类依然不能生成对象,所以要用到函数的复写(override),使用之后,这个类之前也就不用使用abstract.
抽象类跟构造函数的关系:同样构造函数也可以复写。所以依然可以使用抽象函数生成对象。
为什么要使用抽象类?
首先它是一个抽象的,不是具体的概念。例如打印机,可以分为针打印机和喷墨打印机两种,我们可以定义一个名为打印机的类,这个类包含针打印机和喷墨打印机相同的基本操作,但是他们的打印方式不同,所以他们的输出函数也就不同,所以这时就要使用抽象类了。使用抽象的好处之一,可以防止程序员遗忘代码,或者写错代码。
这里有一句话,特别值得思考,如果一段代码在语义上有错误,那么在语法上应该也有错误
1.如何使用super();
1.由于子类无法直接继承父类的构造函数,但是子类的构造函数可能会产生与父类重复的代码,所以在子类的构造函数中必须添加父类的构造函数,怎么解决呢? 使用super();这个函数跟this();( 至于调用那个函数,由函数的形参所决定 )类似,区别在于前者是调用父类的构造函数,后者是调用当前所在类的构造函数。
2.复写(override)也称覆盖或重写,有两个辨别的原则:
1.具备父子类关系。
2.在父类和子类的函数中,函数的返回值类型,函数名以及参数列表相同。
为什么要用复写呢?
当对父类的方法不满意要修改时,就可以使用。也就是在父类方法的基础上,添加修改。
3.super的第二种用法
在父类方法的基础上进行扩展,也就不可避免的重复了,所以使用super.
格式:super.要复写的父类函数名();
函数分为构建函数和普通函数。
构建函数是什么?
用来创建对象的函数,如果在类创建中没有手动创建,计算机会自动创建。
函数的格式: 类名(形参,可有可没){ } 这个类名必须与CLASS后面的相同。与普通函数的区别是没有返回值。在什么情况下要使用它?重不重要,应不应该找点练习题来做,加深一下理解?
函数有一个重要的语法点是函数可以重载,可以根据三个原则来区别:1.多个同名函数存在同一个类中。2.同名。3.形参不同。
调用构造函数的方法: A d=new A();
可以用来消除重复性代码。
三 对象
1.什么是对象?
百度百科上面的定义是行动或思考时当作目标的事物或恋爱双方。换句话说对象就是所要研究的任何事物。从程序员角度来看,对象就是一个模块,( 程序员的工作是不是要设计一个这样的模块出来? ),从用户来看,这个模块是否实现了我所要的功能。对象的内部状态称为属性,比如游戏中某件装备中的武力啊,耐力啊,就称为属性。
什么是行动?
为达到某种目的而进行的活动,比如我要为自己做一道红烧鱼,可以分为以下步骤:1.对鱼撒盐以保证鱼肉不过于清淡。2.热锅热油。3.放鱼,时不时翻两下以免烧焦。4.加点水,然后焖个七八分钟。5.摆盘。那么在这一系列步骤中,作为目标的事物就是红烧鱼,也就是对象。这些事物可以是具体的或者抽象的,比如一本书,某个人,某道菜,某条交通规则。
2.对象的创建方法:
类名 对象名= new 类名();
对象名可以任意取 。
new的作用:就是在堆内存里面开辟一片空间存放对象的本尊。
它的过程:
类名 对象名 = new 类名();
首先在栈内存里面创建引用(对象名)
类名 对象名 = new 类名();
其次在堆内存里面开辟一片空间存放对象的本尊。
类名 对象名 = new 类名();
最后把本尊赋值给引用。
3.调用对象的方法:
对象名(引用).变量; 这个也可以表示为 类名().变量; 这种用法叫做匿名。
对象名(引用).函数;
对象名可以有多个,比如狗类中的哈士奇,世界上有很多只,但每一只都不一样。
有一种特殊情况,就是在创建匿名对象的过程中, 类名 对象名 = new 类名();
如果有两个同样,其中的new是完全不同的,因为这个对象是匿名的,想要找到是不可能的。
所以创建的是不同的对象。
4.关键字this:
它的作用:它属于调用这个函数的对象。相当于现实中的代词“我”,比如张三说“我”和李四说“我”,这个“我”,它所代表的是不同的个体。另外它可以用来区别类中成员变量和函数的形参。
格式:this.变量名; this(形参);作用是调用本类中另外一个函数。
person(string name,int age,string address){ }
相当于
person(string s1,int a,string s2){ name=s1;age=2;address=s2; }
5.向上转型
什么是向上转型?
子类的对象赋值给父类的引用。比如一条哈士奇,它属于哺乳动物,是狗的父类,狗又是哺乳动物中的一类,而哈士奇是狗其中的一只,也就是狗的对象,所以我们可以称哈士奇是一只狗。
它的格式: 子类名 对象名=new 子类名(); 父类名 引用名=对象名;
语法规则:1.能够调用的成员变量,取决于这个引用的类型,有就可以调,没有则就显示找不到。
2.一个引用能够调用的方法(函数),取决于这个引用的对象。也就是这个类的儿子。
6.对象的向下转型
什么是向下转型?将父类的对象赋值给子类的引用。
先向上转型然后再把赋值.
例如:student s=new student();
person p=s;
student s1=p;
前提是必须先向上转型。
抽象函数
定义:只有函数定义,没有函数体。
格式:abstract void eat();
四 变量
1.变量static
静态变量的语法特点:加在声音变量和函数的前面。
它的作用:在把类装载进内存的时候,初始化一些变量。
它与普通成员变量的区别:一。调用方法不同 ,它是使用类名.变量进行调用的。
二。创建对象的方式相同,但赋值方法不同,一般创建对象,每个区域都有属于自己的值,但静态定义的对象所在区共用一个值。比如:前者使用的演绎法从一般到特殊,后者用的是归纳法从特殊到一般。
如果给静态的成员变量其中一个赋值,那么另外一个也会变。
另外在静态函数中不能使用this关键字。也就是不能在静态函数中使用非静态变量。
静态代码块 static{ }
作用是初始化变量。
五 软件包
1.什么是软件包?
软件包其实就是一个存放类文件的文件夹。用来避免相同类名的程序造成不必要的混乱,就是允许使用相同类名,但是放在不同的空间。
创建一个软件包,需要使用语句: package 包名;
包名的命名规则:
1.一般都使用小写。
2.有域名要倒过来写。例如 marsdroid.org作用包名时,要倒过来,而且还有一点不同,就是里面的这个点“.”,会产生一个子目录。
编译要使用命令:java -d 文件所要存放的目录名 类名.java
使用这个包的命令:java 包名.类名
2.访问权限
分为四种:
1.公共权限 public
(1)公共权限对类的作用:首先两个类A和B得在不同的包里面,如果A要调用B来创建对象,则需要对B进行声明。声明格式:public class 类名{ } PS:这个类名必须跟原文件的名字一样。
在任何包中都可以用。
调用格式:包名.类名 对象名=new 包名.类名();但是用这个名字太长了,创建多个对象的时候会很麻烦,所以用到一个偷懒的办法: import 包名; 意思是将相同或不同包里面的类导入当前的类当中。如果在包名后面+.* 则导入这个包目录下所有的类。
(2)公共权限对类属性和方法的作用:声明格式:public 变量类型 变量名; 调用则和普通用法相同。
2.private 私有权限
作用:不用对类名进行声明,只对类的属性和方法声明,声明之后,只能在本类中进行使用。
3.default 包级别访问权限
作用:在相同的包里面,不同的类可以相互调用。如果在不同的包里面则不可以。不用声明,系统已经默认。
4.protected 受保护权限
首先它和default有一样的功能,但是只声明成员变量和成员函数。它和公共权限的区别在于它所声明的成员变量和成员函数,只有它的子类能够调用,而公共权限所声明的不管在哪都可以调用。另外在不同的包里面使用这个权限的时候,这个类要被声明为公共权限。
有一个基本原则:一个类的成员变量和函数的访问权限应该尽可能的小.
3.软件包访问权限跟类继承的关系
如果子类跟父类不在同一个包中,那么子类无法使用父类的default类型的成员变量和函数,原因是访问的权限不够。如果要使用需要声明为公共权限。
六 接口(JAVA的核心)
什么是接口?
定义接口就是定义了调用对象的标准。
接口的语法规则:
1.定义一个接口要使用 interface 关键字。
2.接口里面的方法都是抽象方法。要使用标准必须先继承,然后复写。
3.接口里面的方法都是公共权限。
一个类继承一个接口要用 implements 关键字
一个类还可以继承多个接口,例如手机就是一个比较大的类,它跟电脑互联的标准有很多少个,比如USB WIFI 蓝牙。
接口还可以继承另一个接口,使用extends关键字继承,比如一个电脑的USB接口,它可以继承WIFI的一些特性,比如上网。
七 异常
1.什么是异常?
异常就是一个阻止程序正常运行的错误或情况。比如我正全神贯注的学习,外面有人来敲门,我不得不去开门。异常就是一个从异常类创建的对象。
2.异常的分类
异常分为致命(Error)的和非致命的(Exception)以及运行时异常(RuntimeException)它是非致命的子类。
非致命异常属于免检异常(unchecked exception) 致命异常属于必检异常(checked exception),指的是编译器会强制程序员检查它们。
它们的区别是什么?
非致命就是程序或外部环境所造成的一些能够处理和捕捉的异常,例如人被子弹打到腿,这是可以处理的。
致命就是内部系统错误,这种情况很少发生,一旦发生,什么都干不了,只能稳妥的退出。例如人得了绝症,治疗不了,只能尽量地减少痛苦。
3.异常如何去创建,捕捉,抛出以及处理的?
异常的创建:try{ } 这个块里面包含的是一个正常运行但有可能出错的程序。如果出现错误,就使用 throw new 异常类(); 这个关键字来抛出,同时调用catch(异常类 对象名){ }来处理异常。
throw这个调用非常类似于调用方法,不过它调用的是catch这个块,而且返回之后不在throw,而是在catch。
catch(异常类型 参数)指定了要处理的异常类型。
4.为什么要使用异常?
因为异常可以检查出错误,并分离出这个错误。它使程序在运行时出现错误不会不之所措,而是提供了一个解决错误的方法。比如一个新手在遇到困难不知道怎么办的时候,在他身边来了一个老手,提供了解决困难的思路一般。
5.异常的处理扩展
异常的处理基于三个操作:声明异常,抛出异常,捕捉异常。使用关键字throws+要抛出的异常类型1,异常类型2{}这个块来声明异常(如果父类没有声明,那么在子类就不能覆盖进行声明),然后使用throw new 异常类(); 进行抛出,最后使用catch(异常类 对象名)来捕捉。
6.try-catch的用法
如果当前的方法中没有该类异常的处理器,程序会自动返回到调用该方法的方法中,继续寻找,如果没有,就退出程序。
如果一个catch块能够捕捉父类的对象,那么就能够捕捉这个父类的子类的所有异常对象。
catch块的排序也有讲究,应该按照从大到小,一类一类的排。
八 I/O流
什么是I/O流?
类似于一根从水库抽水/进水的水管,抽水是由抽水机进行的。
i应该就是输入,O就是输出。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值