手记

《Java入门第二季》总结

定义一个类时 首字母要大写

------对象的创建与应用------
使用对象的步骤:
1创建对象:
类名 对象名=new 类名();
Telphone phone=new Telphone();
2使用对象
引用对象的属性:对象名.属性
phone.screen=5;//给screen属性赋值5
引用对象的方法:对象名.方法名()
phone.sendMessage();//调用sendMessage()方法

------成员变量和局部变量------
1成员变量
在类中定义,用来描述对象将要有什么
本类的方法及其他类的方法使用
java会给成员变量一个初始值
2局部变量
在类的方法中定义,在方法中临时保存数据
只能在当前类使用
java不会给局部变量赋予初始值
在同一个方法中,不允许有同名局部变量
在不同的方法中,可以有同名局部变量
两类变量同名时,局部变量具有更高的优先级

------构造方法------
1使用new+构造方法 创建一个新的对象
2构造方法是定义在java类中的一个用来初始化对象的方法
构造方法与类同名且没有返回值
3当没有指定构造方法时,系统会自动添加无参的构造方法
4当有指定构造方法,无论是有参、无参的构造方法都不会自动添加无参的构造方法
5构造方法的重载:和普通的方法重载一样
6构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值

------java中的static使用之静态变量------
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是

某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可

以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问

使用 static 可以修饰变量、方法和代码块。

注意:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直

到该类被卸载才会进行资源回收!

------java中的static使用之静态初始化------
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代
码块。如果使用 static 修饰初始化块,就称为静态初始化块。

注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能
给静态变量赋值,不能初始化普通的成员变量。

程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方
法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并不执行静
态初始化块。

------java中的static使用之静态方法------
1静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
2如果希望在静态方法中调用非静态变量,非静态方法,可以通过创建类的对象,然
后通过对象来访问非静态变量,非静态方法
3在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

------封装的实现步骤------
1修改属性的可见性 设为private
2创建getter/setter方法 用于属性的读写
3在getter/setter方法中加入属性控制语句 对属性值的合法性进行判断

------系统的包------
java.功能.类
java.lang.类 包含java语言基础的类
java.util.类 包含java语言中各种工具类
java.io.类 包含输入、输出相关功能的类

java中,包的命名规范是全小写字母拼写

使用的时候不但可以加载某个包下的所有文件
eg:com.imooc.
也可以加载某个子包下的所有文件
eg:com.imooc.music.

访问修饰符的总结
访问修饰符 本类 同包 子类 其他
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y

------java中的this关键字------
1this.属性 操作当前对象的属性
2this.方法 调用当前对象的方法
3封装对象的属性的时候,经常使用this关键字

------内部类的主要作用------

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中

的其他类访问该类

  1. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  2. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
    内部类有以下几种
    成员内部类 静态内部类 方法内部类 匿名内部类

------成员内部类的使用方法------
1.Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,
Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
2.Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问
控制符的影响,如直接访问 Outer 类中的私有属性a
3.定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去
new 一个内部类对象,
即:内部类 对象名 = 外部类对象.new 内部类( );
4.编译上面的程序后,会发现产生了两个 .class 文件
其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员
内部类的 .class 文件总是这样:外部类名$内部类名.class

注意:
1.外部类不能直接使用内部类的成员和方法
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法
2.如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变
量或方法,如果要访问外部类的成员变量,可以使用this关键字。如:
Outer.this.b;

------静态内部类是 static 修饰的内部类------
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成

员的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访

问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通

过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象

名= new 内部类();

------java中的方法内部类------
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见

,即只在该方法内可以使用。
注意:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能

使用访问控制符和 static 修饰符。

------继承------
1java中的继承是单继承的 一个类只有一个父类(一个人只有一个亲爹)
2继承的好处:
子类拥有父类的所有属性和方法(属性的修饰符不能是private)
实现代码的复用
3语法规则(使用extends关键字)
class 子类 extends 父类{

}

------方法重写------
1如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时

会优先调用子类的方法。
2语法规则:
a.返回类型
b.方法名
c.参数类型及个数
d都要与父类继承的方法相同,才叫方法重写

------继承的初始化顺序------
当我们创建一个对象的时候,我们所执行的构造方法相当于初始化一个对象,只要

重写构造方法,就知道执行顺序
1.初始化父类再初始子类
2先执行初始化对象中属性,再执行构造方法的初始化
总结:父类属性初始化-父类构造方法-子类属性初始化-子类构造方法

------final关键字------
final可以修饰类,方法,属性和变量
修饰类:该类不可以被继承
修饰方法:该方法不允许被覆盖(重写)
修饰属性:该类的属性不会被隐式的初始化(类的初始化属性必须有值,如果在声

明的时候没有赋值则在构造方法中必须赋值,只能选其一方法进行赋值)
修饰变量:该变量的值只能赋一次值,则变为常量

------super关键字------
在对象的内部使用,可以代表父类对象
1.访问父类的属性
super.age
2.访问父类的方法
super.eat();
super的应用
1子类的构造过程当中必修调用其父类的构造方法(隐式地使用了super关键字)
2如果子类的构造方法中没有显示调用父类的构造方法,则系统默认调用父类无参的

构造方法
3如果显式的调用构造方法,必须在子类的构造方法的第一行使用super();
4如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方

法,则编译出错。

------Object类------
Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一

个类,那么这个类默认继承Object类。
Object类的方法,适合所有子类
1.toString()方法
在Object类里面定义toString()方法的时候返回的对象的哈希code码(对象地址字

符串)直接输出对象,输出的是包名@对象地址字符串
可以通过重写toString()方法表示出对象的属性
右键Source-Generate toString():就可以生成输出对象属性的toString方法

2.equals()方法:比较的是对象的引用是否指向同一块内存地址
但是一般情况下比较两个对象是比较他的值是否一致,所以要进行重写
右键-Source-Generate hashCode()and equals():会自动生成hashCode()和

equals()方法,只删剩equals()方法即可比较两个对象的值是否一致

类对象(getClass):类的代码信息
类的对象(new一个类):对象的属性值的信息,数据信息

语法:
对象1.equals(对象2):两个对象是否相同

------java中的多态------
多态:对象的多种形态(两个类是继承关系)
1.引用多态
父类的引用可以指向本类的对象 如:Animal obj1=new Animal();
父类的引用可以指向子类的对象 如:Animal obj2=new Dog();
2.方法多态
创建本类对象时,调用的方法为本类方法 如:obj1.eat();
创建子类对象时,调用的方法为子类重写的方法或者继承的方法 如:obj2.eat();
注意:子类独有的方法,就不能通过父类的引用来调用子类独有的方法

------引用类型转换------
1向上类型转换(隐式/自动类型转换),是小类型到大类型的转换
2向下类型转换(强制类型转换),是大类型到小类型
3instanceof运算符,来解决引用对象的类型,避免类型转换的安全性
if(animal instanceof Cat){
Cat cat=(Cat)animal;//如果编译时可以转换则强制转换为Cat类型
}

------抽象类------
1语法定义:抽象类前使用abstract关键字修饰,则该类为抽象类。
2应用场景:
a在某些环境下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这

些子类如何实现这些方法。
b从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从

而避免了子类设计的随意性
3作用:限制规定子类必须实现某些方法,但不关注实现细节
4使用规则
abstract定义抽象类 且顺序为abstract class
abstract定义抽象方法,只有声明,不需要实现
包含抽象方法的类是抽象类
抽象类中可以包含普通的方法,也可以没有抽象方法
抽象类不能直接创建,可以定义引用变量 父类 对象名=new 子类();
抽象方法没有方法体,以分号结束public abstract void call();

------接口------
1接口概念:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成
类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些

类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某

些方法
2接口定义
和类定义不同,定义接口不再使用class关键字,而是使用interface关键字,接口

的命名一般用大写的I开头
3接口定义的基本语法:
[修饰符]interface 接口名[extends 父类接口1,父类接口2...]
{
零个到多个常量定义...
零个到多个抽象方法的定义...
}
接口就是用来被继承、被实现的,修饰符一般建议使用public
注意:不能使用private和protected修饰接口
4常量:
接口中的属性是常量,则使定义时不添加public static final修饰符,系统也会

自动加上。
5方法
接口中的方法只能是抽象方法,总是使用,即使定义时不添加public abstract修

饰符。系统也会自动加上。
6使用接口
一个类可以实现一个或多个接口,实现接口使用implements关键字。java中一个类

只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。
7继承父类实现接口的语法
[修饰符]class 类名 extends 父类 implements 接口1,接口2...
{
类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽

象方法
}
如果要继承父类,继承父类必须在实现接口之前
接口名 对象名=new 实现了接口的对象

接口在使用过程中,还经常与匿名内部类配合使用
匿名内部类就是没有名字的内部类
多用于关注实现而不关注实现类的名称
语法规则:

1
Interface i=new Interface(){
public void method(){
System.out.println("匿名内部类实现接口的方式")
}
};//此处用分号结束
对象名.method();

2
new Interface(){
public void method(){
System.out.println("匿名内部类实现接口的方式")
}
}.method();

------UML------
1UML概念:Unified Modeling Language(UML)
又称统一建模语言和标准建模语言

是一个支持模型化和软件系统开发的图形化语言
为软件开发的所有阶段提供模型化和可视化支持
2常用UML图
用例图(The Use Case Diagram)
用例图能够可视化的方式,表达系统如何满足所收集的业务规则,以及特定的用户

需求等信息
序列图
序列图用于按照交互发生的一系列顺序,显示对象之间的这些交互
类图
UML类图、业务逻辑和所有支持结构一同被用于定义全部的代码结构
3UML建模工具
Visio、Rational Rose、PowerDesign三种建模工具应用最广

7人推荐
随时随地看视频
慕课网APP