简述--抽象--接口--带包编译

本文介绍了Java中的抽象类和接口的概念及用法,包括抽象类的定义、注意事项、案例分析,接口的定义、特点以及接口与抽象类的区别。同时,文章还讲解了带包编译的过程,包括如何通过命令行进行编译和运行带包的Java程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象

用abstract 修饰的类:

​ 抽象方法格式:

​ abstract 修饰符 返回值类型 方法名(参数列表);

​ 抽象类的定义格式:

​ abstract class 类名{}

注意事项:

​ 1. 抽象类中可以没有抽象方法,有抽向方法的类一定是抽象类

​ 2. 抽象类不能创建对象,需要使用子类向上转型

​ 3. 抽象的子类要么实现抽象类中所有的抽象方法,要么自己是一个抽象类

​ 4. 抽象类有构造方法

  1. abstract 不能和final共存

  2. 案例:

    创建一个抽象类,定义两个抽象方法
    定义一个子类,继承抽象类,实现这两个抽象方法
    使用抽象类的多态,调用这两个方法

接口

定义格式:

​ interface 接口名{}

注意事项:

​ 1. 接口中只能定义常量,默认public static final修饰

​ 2. 接口中只能定义抽象方法(1.8之前) 默认是public abstract 修饰

​ 3. 接口不能创建对象,使用子类向上转型

​ 4. 接口的子类: 实现了接口的类 class 子类名 implements 接口1,接口2{}

​ 5. 接口的子类要么实现接口中所有的抽象方法要么自己是一个抽象类

​ 6. 一个类可以实现多个接口,并且可以在继承类的同时实现多个接口

​ 7. 接口中没有构造方法

​ 8. jdk8之后接口中可以定义已经实现的方法,但是必须使用static/default 修饰

​ 9. 接口不能实现接口,只能继承接口,并且可以多继承

​ class 子类名 implements 接口1,接口2{}

案例

编写一个抽象类Animal,抽象类中包括属性:name(String类型),抽象方法:speak()。

编写一个宠物接口pet,接口中包括方法:eat()。

再编写一个类cat,实现该接口和抽象类中的所有方法。

​ speat(): “miao, my name is xxx”

​ eat(): “I want to eat some fish”

在main中进行测试,输出:
给猫赋值一个名字,调用speak,eat 方法

public class InterfaceTest2 {
​ public static void main(String[] args) {
​ Pet p = new Cat();
​ p.eat();
​ //p.speak();//speak 并不存在与Pet接口中,所有他是子类中独有的方法,在多态的时候,调不了
​ Animal a = new Cat(“小花”);
​ a.speak();
​ //a.eat();//不能调子中独有的
​ }
}
//the type animal is already defined: 代表本包中已经有该名字的类: 换一个名: 建一个包
abstract class Animal{
​ String name;
​ abstract public void speak();
}
interface Pet{
​ void eat();
}
class Cat extends Animal implements Pet{
​ public Cat() {}
​ public Cat(String name) {
​ this.name = name;
​ }
​ @Override
​ public void eat() {
​ System.out.println(“I want to eat some fish”);
​ }
​ @Override
​ public void speak() {
​ System.out.println("miao, my name is "+name);
​ }
}

抽象类和接口的区别:

1.一个类最多只能继承一个抽象类,但是可以实现多个接口

2.抽象类中既可以定义变量也可以定义常量,接口中只能定义常量

3.抽象类中既可以定义抽象方法,也可以定义非抽象方法,接口中能定义抽象方法(jdk8之前)

4.接口中没有构造方法,抽象类中有构造方法

5.接口只能继承接口不能实现接口,并且可以多继承

带包编译

和大多数入门程序一样先使用notepad++ 编写一个带包的HelloWorld

package com.doit.test;
class HelloWorld{
​ public static void main(String[]args){
​ System.out.println(“hello world”);
​ }

}

使用命令行如何执行:package com.doit.test;

手动式:

  1. 使用javac命令编译 javac 文件名.java javac HelloWorld.java

  2. 在类所在的文件夹下,按照包的格式把对应的文件夹创建出来,把.class文件拷贝到文件夹中

    ​ 使用java 包名.类名 运行

自动式:

  1. javac(空格) -d (空格).(空格) 文件名.java
  2. java 包名.类名

导包: import 全类名;

顺序: package import class

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值