栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaSE总结(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaSE总结(二)

目录

类和对象

简单认识类

类的定义格式

类的实例化

this引用

对象的初始化

 构造方法

封装继承和多态

封装

封装扩展之包 

导包

继承

继承的语法

super关键字

子类构造方法

final关键字

多态

多态实现的条件

向上转型和向下转型

抽象类和接口 

抽象类

抽象类语法

接口

接口语法:

接口使用


类和对象

简单认识类

类的定义格式

在java中定义类时需要用到class关键字,具体语法如下

class ClassName{
    //成员变量
    //成员方法
}

class为定义类的关键字,ClassName为类的名字,{}中为类的主体
类名注意用大驼峰书写 

类的实例化

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象
 

注意事项

new 关键字用于创建一个对象的实例.使用 . 来访问对象中的属性和方法.同一个类可以创建对个实例.

this引用

java编译器给每个“成员方法“增加了一个隐藏的引用类型参数,该引用参数指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

注意:this引用的是调用成员方法的对象

this引用的特性

1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this只能在"成员方法"中使用
3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象,具有final属性
4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收

对象的初始化

在Java方法内部定义一个局部变量时,必须要初始化,否则会编译失败

public static void main(String[] args) {
    int a;
    System.out.println(a);
} 
// Error:(26, 28) java: 可能尚未初始化变量a

要让上述代码通过编译,非常简单,只需在正式使用a之前,给a设置一个初始值即可。
 

 构造方法

构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

构造方法的特性

1. 名字必须与类名相同
2. 没有返回值类型,设置为void也不行
3. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
5. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
6. 构造方法中,可以通过this调用其他构造方法来简化代码
(但是要注意:1.this(...)必须是构造方法中第一条语句2.不能形成环)

封装继承和多态

面相对象程序三大特性:封装、继承、多态。

封装

封装定义:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:

封装扩展之包 

概念:为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。

包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个
包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。

导包

可以使用 import语句导入包。

也可以自己自定义一个包(在文件的最上方加上一个 package 语句指定该代码在哪个包中)具体的操作之前的博客有写。

继承

继承(inheritance):是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。继承主要解决的问题是:共性的抽取,实现代码复用。

继承的语法

在Java中如果要表示类之间的继承关系,需要借助extends关键字。

修饰符 class 子类 extends 父类 {
    // ...
}

成员变量访问遵循就近原则,自己有优先自己的,如果没有则向父类中找。

如果访问的成员变量子类中有,优先访问自己的成员变量。如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。如果访问的成员变量与父类中成员变量同名,则优先访问自己的,即:子类将父类同名成员隐藏了

super关键字

super关键字,该关键字主要作用:在子类方法中访问父类的成员

在子类方法中,如果想要明确访问父类中成员时,借助super关键字即可。

【注意事项】
1. 只能在非静态方法中使用
2. 在子类方法中,访问父类的成员变量和方法。

子类构造方法

在子类构造方法中,并没有写任何关于基类构造的代码,但是在构造子类对象时,先执行父类的构造方法,然后执行子类的构造方法,因为:子类对象是一个父类对象,在构造子类对象时,先要将从父类继承下来的成员初始化完整,然后再初始化子类自己新增加的成员。

注意:
1. 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用基类构造方法
2. 如果父类构造方法是带有参数的,此时编译器不会再给子类生成默认的构造方法,此时需要用户为子类显式定
义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
3. 在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。
4. super(...)只能在子类构造方法中出现一次,并且不能和this同时出现

final关键字

如果想从语法上进行限制继承, 就可以使用 final 关键字

final关键可以用来修饰变量、成员方法以及类。
1. 修饰变量或字段,表示常量(即不能修改)
2. 修饰类:表示此类不能被继承
3. 修饰方法:表示该方法不能被重写(后序介绍)

多态

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。

多态实现的条件

1. 必须在继承体系下
2. 子类必须要对父类中方法进行重写
3. 通过父类的引用调用重写的方法

多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法

向上转型和向下转型

向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。

子类对象是一个父类对象,即可以将一个子类对象当成父类对象来应用。因此:向上转型是安全的,因为是从小范围向大范围的转换。

Animal animal = new Cat("喵喵");

向上转型的优点:让代码实现更简单灵活。向上转型的缺陷:不能调用到子类特有的方法

向下转型:将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转型。

抽象类和接口 

抽象类

 概念:如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类语法

在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。

抽象类特性:

1. 抽象类不能直接实例化对象
2. 抽象方法不能是 private 的(注意:抽象方法没有加访问限定符时,默认是public.)
3. 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
4. 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
5. 抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
6. 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

接口

接口概念:接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

接口语法:

接口的定义格式与定义类的格式基本相同,将class关键字换成 interface 关键字,就定义了一个接口。

public interface 接口名称{
    // 抽象方法
    public abstract void method1(); // public abstract 是固定搭配,可以不写
    public void method2();
    abstract void method3();
    void method4();
    // 注意:在接口中上述写法都是抽象方法,跟推荐方式4,代码更简洁
}

提示:
1. 创建接口时, 接口的命名一般以大写字母 I 开头.
2. 接口的命名一般使用 "形容词" 词性的单词

接口使用

接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。

public class 类名称 implements 接口名称{
    // ...
}

接口特性:

1. 接口类型是一种引用类型,但是不能直接new接口的对象
2. 接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)
3. 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现

4. 重写接口中方法时,不能使用default访问权限修饰
5. 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量
6. 接口中不能有静态代码块和构造方法
7. 接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class
8. 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
9. jdk8中:接口中还可以包含default方法
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号