Java入门第二季

第一章 类和对象

1-1 什么是类和对象

1、对象的概念?

万物皆对象,客观存在的事物皆为对象

2、什么是面向对象

人关注对象(事物信息)

3、类

类是模子,确定对象将会拥有的特征(属性)和行为(方法)

类的特点:类是对象的类型;具有相同属性和方法的一组对象的集合。

4、什么是对象的属性

每个对象的每个属性都有特定值

5、 什么是对象的方法

方法-对象执行的操作

6、 类和对象的关系/区别

类是抽象的概念,仅仅是模板;对象是具体的实体。

1-2 如何定义类

所有Java程序都以类class为组织单元

定义一个类的步骤:a.定义类名;b编写类的属性;c.编写类的方法。

1-3 如何使用对象

使用对象的步骤:

1、创建对象:类名 对象名=new 类名();

2、使用对象

引用对象的属性:对象名.属性   phone.screen=5.0//给screen属性赋值5

引用对象的方法:对象名.方法名();   phone.sendMessage();//调用sendMessage()方法

1-5 成员变量和局部变量

成员变量:在类中定义,用来描述对象将要有什么。

局部变量:在类的方法中定义,在方法中临时保存数据。

成员变量和局部变量的区别

1、作用域不同

局部变量的作用域仅限于定义它的方法,成员变量的作用域在整个类内部都是可见的。

2、初始值不同

成员变量有一个初始值,局部变量没有初始值。

3、在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量。

4、两类变量同名时 ,局部变量有更高的优先级

1-6 Java中的构造方法

1、使用new+构造方法创建一个新的对象

2、构造方法是定义在Java类中一个用来初始化对象的方法

语法: public 构造方法名(){

           //初始化代码}

3、无参构造方法的使用

4、带参构造方法的使用

5、当没有指定构造方法时,系统会自动添加无参的构造方法

6、当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法

7、构造方法的重载:方法名相同,但参数不同的多个方法,调节时会自动根据不同的参数选择相应的方法

8、构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值

1-7 Java中的static使用之静态变量

Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~

 

1-9 Java中的static使用之静态方法

static修饰的方法称为静态方法或类方法

需要注意:

1、静态方法可以直接调用同类中的静态变量,但不可以访问非静态变量;

如果想在静态方法中访问非静态变量,需要先创建类的对象,然后通过对象来访问非静态变量。

2、普通成员方法可以直接访问同类中的静态变量和非静态变量

3、静态方法不可以直接调用非静态方法,需要通过对象来访问非静态方法

 

1-10 Java中的static使用之静态初始化块

Java中可以通过初始化块进行赋值。

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

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

看一段代码:

运行结果

第一次创建类的实例时,依次执行初始化块,先执行静态初始化块,接着执行普通初始化块,最后执行构造初始化块;继续执行代码;第二次创建类的实例时,依次执行初始化块,但静态初始化块只执行一次。

第二章 封装

2-1 什么是封装

1、概念

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是要通过该类提供的方法来实现对隐藏信息进行操作和访问

2、好处:a.只能通过规定的方法访问数据

                b.隐藏类的实例细节,方便修改和实现

3、封装的实现步骤

修改属性的可见性(设为private)-》创建getter/setter方法(用于属性的读写)-》在getter/setter方法中假如属性控制语句(对属性值得合法性进行判断)

    private float screen;
    public float getScreen() {
        return screen;
    }
    public void setScreen(float newScreen) {
        screen=newScreen;
    }
    main函数中调用:

phone2.setScreen(6.0f);
System.out.println("screen:"+phone2.getScreen());

2-2 使用包管理Java中的类

1、包的作用:管理Java文件 解决同名文件冲突

2、定义包:package 包名

注:必须放在Java源程序的第一行 包名间可以使用"."号隔开

eg:com.imooc.MyClass 

3、系统中的包

java.(功能).(类)

java.lang.(类) 包含java语言基础的类

java.util.(类) 包含java语言中各种工具类

java.io.(类) 包含输入、输出相关功能的类

4、包的使用

(1)可以通过import关键字,在某个问价使用其他文件中的类。

(2)Java中,包的命名规范是全小写字母拼写

(3)使用的时候不但可以加载某个包下的所有文件 eg:com.imooc.*

        也可以加载某个具体子包下的所有文件   eg:com.imooc.music.*

2-3 Java中的访问修饰符

访问修饰符--可以修饰属性和方法的访问范围

访问修饰符    本类    同包   子类   其他

private           /

默认               /            /

protected      /            /        /

public            /           /         /         /

2-4 Java中的this关键字

1.this关键字代表当前对象

            this.属性 操作当前独享的属性

            this.方法 调用当前对象的方法

2.封装对象的属性的时候,经常会使用this关键字

2-5 什么是Java中的内部类

内部类就是定义在另一个类里面的类。

1、内部类提供了更好的封装,隐藏在外部类之内,不允许容一个包中的其他类访问该类

2、内部类可以调用外部类的所有数据,包括私有数据

3、内部类所能实现的所有功能使用外部类都可以实现,只是有时更方便

内部类可以分为以下几种:成员内部类,静态内部类,方法内部类,匿名内部类

2-6 成员内部类

也称普通内部类。

上面的代码可以看出成员内部类的使用方法:

1、Inner类定义在Outer类的内部,相当于一个成员变量的位置,而且可以使用任意的访问修饰符private、protected、public

2、Inner类的test方法可以访问Outer类的任意数据,而不受访问修饰符的影响

3、定义成员内部类后,必须使用外部类对象来创建一个内部类对象,而不能直接new一个内部类对象。语法:内部类 对象名()=new 外部类对象.内部类();

4、编译了上面的程序后,会产生两个.class文件

内部类是Outer$Inner.class文件

友情提示:

1、外部类不能访问内部类的成员和方法。

要想调用,需要先创建内部类对象。

2、如果内部类和外部类有相同的成员变量和方法,内部类默认访问自己的成员变量,如果想访问外部类的成员变量可以使用关键字this。

2-7 静态内部类

静态内部类是static修饰的内部类。这种内部类的特点是:

1、静态内部类不能直接访问外部类的非静态成员,需要使用 new 外部类().成员 的方式访问。

2、如果外部类的静态成员和静态内部类的成员名称相同,则可使用 外部类.静态成员名 来访问外部类的静态成员;如果外部类的静态成员和静态内部类的成员名称不同,则可直接使用 静态成员名 访问

3、创建内部类对象时,不需要外部类对象,可以直接创建内部类对象 内部类 对象名=new 内部类;

2-8 方法内部类

方法内部类就是定义在外部类的方法中的内部类,只在该方法的内部可见,及只可以在该方法中使用。

由于方法内部类不能再外部类的方法以外的地方使用,所以方法内部类不能使用访问修饰符和static修饰符。

第三章 继承

3-1 Java中的继承

1、继承是类与类的一种关系,是一种“is a”的关系。Java中的继承是单继承。

2、继承的好处:子类拥有父类的所有属性和方法,但属性和方法的修饰符不能是private;

                           实现代码复用

3、语法规则:

class 子类 extends 父类

3-2 Java中的方法重写

1、什么是方法的重写:

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

2、语法规则:

a.返回值类型

b.方法名

c.参数类型及个数

都要与父类继承的方法相同,才叫方法的重写。

3-4 Java中的继承初始化顺序

继承时程序是如何执行的?

继承的初始化顺序:

1、初始化父类再初始化子类

2、先执行初始化对象中属性,再执行构造方法中的初始化

总结初始化顺序是先父类的属性初始化->父类的构造方法->子类属性初始化->子类的构造方法

3-5 Java中的final的使用

final关键字

使用final关键字做标识有“最终的”含义

final可以修饰类、方法、属性和变量

final修饰类,则该类不允许被继承

final修饰方法,则该方法不允许被覆盖(重写)

final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)

final修饰变量,则该变量的值只能赋一次值,即变为常量

3-7 Java中的super的使用

super关键字:在对象的内部使用,可以代表父类对象。

1、访问父类的属性:super.age

2、访问父类的方法:super.eat()

super的应用

子类的构造的过程中必须使用其父类的构造方法;

如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参的构造方法;如果显式的调用构造方法,必须在子类的构造方法的第一行。

如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译出错。

3-8 Java中的Object类

Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另一个类,那么这个类默认继承Object类。Object类中的方法,适合所有子类。

有几个比较重要的方法:

1、toString()方法

在Object类里面定义toString()方法的时候返回的对象的哈希code码(独享地址字符串)

可以通过重写toString()方法表示出对象的属性

2、equal()方法

比较的是对象的引用是否指向同一块内存地址。Dog dog=new Dog() 

一般情况下比较两个对象时比较它的值是否一致,所以要进行重写

源码->生成hashCode()和equals()

第四章 多态

4-1 Java中的多种形态

多态:对象的多种形态。分为引用多态和方法多态。

解释一下对象和对象的引用

Animal obj1=new Animal();

new Animal()是穿件一个对象,Animal animal是创建一个对象引用,=是对象引用指向对象

1、引用多态

父类的引用可以指向本类的对象  Animal obj1=new Animal();

父类的引用可以指向子类的对象  Animal obj2=new Dog();

2、方法多态

创建本类对象时,调用的方法为本类方法

创建子类对象时,调用的方法为子类重写的方法或者继承的方法

4-2 多态中的引用类型转换

1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

2、向下类型转换(强制类型转换),是大类型到小类型

3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

4-3 Java中的抽象类

1、语法定义:抽象类前使用abstract关键字修饰,则称该类为抽象类。

2、应用场景:

a.在某些场景下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

b.从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

3、作用:限制规定子类必须实现某些方法,但不关注实现细节

4、使用规则

a.abstract定义抽象类

b.abstract定义抽象方法,只有声明,不需要实现

c.包含抽象方法的类是抽象类

d.抽象类可以包含普通的方法,也可以没有抽象方法

e.抽象类不能直接创建,可以定义引用变量

4-5 Java中的接口
1、接口概念

接口可以理解为一种特殊的类,由全局常量和公共的抽象方法所组成。接口其实是规范,是用来约束类的。

2、使用interface关键字

接口定义的基本语法:

[修饰符]interface 接口名[extends 父接口1,父接口2...]{

零个到多个常量定义...

零个到多个抽象方法的定义...}

修饰符使用public

3、接口定义

常量:接口中的属性是常量,即使定义时不添加public static final修饰符,系统也会自动加上。

方法:接口中的方法只能是抽象方法,总是使用,即使定义时不添加public abstract修饰符,系统也会自动加上。

4、使用接口

一个类可以实现一个或多个接口,实现接口使用implements关键字。Java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。

继承父类实现接口的语法:

[修饰符]class 类名 extends 父类 implements 接口1,接口2...{

类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口中的抽象方法。}

如果要竭诚父类,继承的父类必须在实现接口之前

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

语法格式:

Interface i=new Interface(){

    pblic void method(){

        System.out.println("匿名内部类实现接口的方式");

}};

4-7 UML简介

1、UML概念

unified Modeling Language(UML) 统一建模语言或标准建模语言

是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持

2、UML图示

UML 2.2中一共定义了14中图示

3、常用UML图

用例图(The Use Case Diagram)

序列图(The Sequence Diagram)

类图(The Class Diagram)

4、UML建模工具

Visio、Rational Rose、PowerDesign

转载于:https://my.oschina.net/u/4185899/blog/3090220

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值