Java基础知识总结(详细整理)——完结篇

本文详细介绍了Java中的抽象类、接口和封装概念。抽象类是包含抽象方法的类,不能实例化,抽象方法没有实现。接口是方法的集合,提供多继承,接口中的方法默认为抽象和公有。封装是将数据和方法封装在一起,限制对外部的访问,通过getter和setter方法控制。文章还探讨了抽象类与接口的区别,以及实现封装的步骤。
摘要由CSDN通过智能技术生成

目录

Java 抽象类

抽象类

抽象方法

抽象方法的定义

抽象方法的特征:

抽象类总结规定

Java 接口

接口与类的区别:

抽象类和接口的区别

接口的声明

定义接口

实现接口

Java 封装 

封装的优点

封装的实现:

实现Java封装的步骤


Java 抽象类

抽象类

java语言提供了两种类,分别为具体类和抽象类。前面学习接触的类都是具体类。这一节介绍一下抽象类。

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。

//在 Java 中抽象类的语法格式如下: 

<abstract>class<class_name> {
    <abstract><type><method_name>(parameter-iist);
}

其中,abstract 表示该类或该方法是抽象的;class_name 表示抽象类的名称;method_name 表示抽象方法名称,parameter-list 表示方法参数列表。

如果一个方法使用 abstract 来修饰,则说明该方法是抽象方法,抽象方法只有声明没有实现。需要注意的是 abstract 关键字只能用于普通方法,不能用于 static 方法或者构造方法中。

抽象方法的 3 个特征如下:

  1. 抽象方法没有方法体
  2. 抽象方法必须存在于抽象类中
  3. 子类重写父类时,必须重写父类所有的抽象方法


注意:在使用 abstract 关键字修饰抽象方法时不能使用 private 修饰,因为抽象方法必须被子类重写,而如果使用了 private 声明,则子类是无法重写的。

抽象类的定义和使用规则如下:

  1. 抽象类和抽象方法都要使用 abstract 关键字声明。
  2. 如果一个方法被声明为抽象的,那么这个类也必须声明为抽象的。而一个抽象类中,可以有 0~n 个抽象方法,以及 0~n 个具体方法。
  3. 抽象类不能实例化,也就是不能使用 new 关键字创建对象。

抽象方法

Java 抽象方法,没有主体的方法(没有实现)被称为抽象方法。方法必须始终在抽象类中声明,或者换句话说,如果类具有抽象方法,则应该将其声明为抽象方法。

抽象方法的定义

Java中普通方法的定义方式是:

访问权限 返回类型 方法名(有参数填写参数,没参数为空){

方法内部代码;

}

因为抽象方法我们无法给出具体的实现,所以抽象方法的定义与普通方法有所不同。定义方式如下:

访问权限 abstract 返回类型 方法名(有参数填写参数,没参数为空);

 注意:因为不知如何实现,所以没有大括号了。

抽象方法的特征:

1.抽象方法不允许有方法体,只能以分号“;”结尾

2.有抽象方法的类只能定义成抽象类(含有抽象方法的类必须是抽象类)

3.抽象类中可以包含 0 个或多个抽象方法

4.抽象方法必须被子类实现

5.如果子类不能实现父类中的抽象方法,那么子类也必须是抽象类

举个例子:

不同几何图形的面积计算公式是不同的,但是它们具有的特性是相同的,都具有长和宽这两个属性,也都具有面积计算的方法。那么可以定义一个抽象类,在该抽象类中含有两个属性(width 和 height)和一个抽象方法 area( ),具体步骤如下。

1.首先创建一个表示图形的抽象类 Shap

    public abstract class Shape {
        public int width; // 几何图形的长
        public int height; // 几何图形的宽
        public Shape(int width, int height) {
            this.width = width;
            this.height = height;
        }
        public abstract double area(); // 定义抽象方法,计算面积
    }

2.定义一个正方形类,该类继承自形状类 Shape,并重写了 area( ) 抽象方法。正方形类的代码如下:

    public class Square extends Shape {
        public Square(int width, int height) {
            super(width, height);
        }
        // 重写父类中的抽象方法,实现计算正方形面积的功能
        @Override
        public double area() {
            return width * height;
        }
    }

3.定义一个三角形类,该类与正方形类一样,需要继承形状类 Shape,并重写父类中的抽象方法 area()。三角形类的代码实现如下:

    public class Triangle extends Shape {
        public Triangle(int width, int height) {
            super(width, height);
        }
        // 重写父类中的抽象方法,实现计算三角形面积的功能
        @Override
        public double area() {
            return 0.5 * width * height;
        }
    }

4.最后创建一个测试类,分别创建正方形类和三角形类的对象,并调用各类中的 area() 方法,打印出不同形状的几何图形的面积。测试类的代码如下:

    public class ShapeTest {
        public static void main(String[] args) {
            Square square = new Square(5, 4); // 创建正方形类对象
            System.out.println("正方形的面积为:" + square.area());
            Triangle triangle = new Triangle(2, 5); //
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值