欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java中抽象类 接口_java中的抽象类与接口

发布时间:2025/3/20 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java中抽象类 接口_java中的抽象类与接口 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.抽象类的定义

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

2.简单实例

Shape类

package 抽象类;

/*

题目:

建立一个Shape抽象类,代表形状,求面积和周长两个方法

建立一个正方形类, 长方形 ,圆类 作为抽象类的子类,

通过抽象类来求面积和周长

*/

public abstract class Shape {

public abstract double getArea();//抽象方法

public abstract double getPan();

}

Square类

package 抽象类;

public class Square extends Shape{

protected double len;

Square(double len){

this.len = len;

}

public double getArea(){

return len*len;

}

public double getPan(){

return 4*len;

}

}

Circle类

public class Circle extends Shape{

private double r;

Circle (double r){

this.r = r;

}

public double getArea(){

return Math.PI*r*r;

}

public double getPan(){

return Math.PI*r*2;

}

}

Demo_Test2类

package 抽象类;

public class Demo_Test2 {

public static void main(String[] args) {

//求正方形的面积和周长

Square square = new Square(3);

double area = square.getArea();

double zc = square.getPan();

System.out.println("正方形的面积:"+area);

System.out.println("正方形的周长:"+zc);

}

}

3.总结:

1. 抽象类不能被实例化

2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

3. 抽象类中的抽象方法只是声明,不包含方法体。

4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

4.接口的概念

接口是只有全局常量和公共抽象方法的一种特殊类,由于在java中只能使用单继承的方式,所以增加接口类型,可以让类实现多个接口。

弥补单继承机制的不足。在接口中所有的常量都默认修饰public static final,所有的方法默认修饰public abstract(JDK1.8之前)。

补充:JDK1.8中对接口增加的特性:

(1)、默认方法(default method):JDK 1.8允许给接口添加非抽象的方法实现,但必须使用default关键字修饰;定义了default的方法可以不被实现子类所实现,但只能被实现子类的对象调用;如果子类实现了多个接口,并且这些接口包含一样的默认方法,则子类必须重写默认方法;

(2)、静态方法(static method):JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。

5.接口与抽象类的异同

相同点:(1)接口与抽象类都不能直接实例化.

不同点:(1)接口中的方法全部是抽象方法,抽象类中的方法不全是。

(2)一个类可以实现多个接口,但是一个子类只能继承一个父类。

(3)接口中的成员权限都是public,抽象类中不一定。

(4)接口强调特定功能的实现,而抽象类强调所属关系。

(5)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。

(6)接口是对行为的抽象,抽象类是对一类事物的抽象。

6.简单示例

AnimalAction接口,代表动物行为

package 接口实例;

public interface AnimalAction {

//吃

void eat();

//public void eat();

//喝

void drink();

}

AnimalLove接口,代表动物的求偶方式

package 接口实例;

public interface AnimalLove {

//求偶方式

void LoveType();

}

AnimalSleep接口,代表动物的作息方式

package 接口实例;

public interface AnimalSleep {

//作息方式

String sleep();

}

Bird类

package 接口实例;

public class Bird implements AnimalAction,AnimalLove,AnimalSleep{

@Override

public String sleep() {

String string="我是鸟,白天觅食,晚上睡觉";

return string;

}

@Override

public void LoveType() {

System.out.println("我是鸟,求偶方式是修房子");

}

@Override

public void eat() {

System.out.println("我是鸟,喜欢吃虫子");

}

@Override

public void drink() {

System.out.println("我是鸟,喝水啄着喝");

}

}

View Code

Cat类

package 接口实例;

public class Cat implements AnimalAction,AnimalSleep,AnimalLove{

@Override

public void LoveType() {

System.out.println("我是猫,求偶方式是抓老鼠");

}

@Override

public String sleep() {

String string="我是猫,白天睡觉,晚上活动";

return string;

}

@Override

public void eat() {

System.out.println("我是猫,喜欢吃鱼");

}

@Override

public void drink() {

System.out.println("我是猫,喝水很斯文");

}

}

View Code

Test类,用于测试

package 接口实例;

public class Test {

//可以用接口创建的引用作为方法的形参

public void BuruAnimal(AnimalAction action)

{

if (action instanceof Cat) {

Cat cat1 = (Cat) action;

cat1.eat();

}

if (action instanceof Bird) {

Bird bird = (Bird)action;

bird.eat();

}

}

public static void main(String[] args) {

//向上转型,自动的

AnimalAction action = new Cat();

action.eat();

action.drink();

//The method sleep() is undefined for the type AnimalAction

//action.sleep();

action = new Bird();

action.eat();

action.drink();

//向下转型,强制转换的

Bird xBird = (Bird)action;

xBird.LoveType();

System.out.println(xBird.sleep());

}

}

运行结果:

参考文章:

标签:java,double,void,接口,action,抽象类,public

来源: https://www.cnblogs.com/YorkZhangYang/p/12741692.html

总结

以上是生活随笔为你收集整理的java中抽象类 接口_java中的抽象类与接口的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。