java 面向对象的理解 简述java面向对象的三个基本特征

类和接口面向对象编程(OOP)现在即将结束。在这个总结中,我们将介绍两个重要的概念。除了类,java中还有两个概念:抽象类和接口。有很多值得学习的东西。在我们理解和思考它们之前,让我们向您展示如何在java中定义抽象类和接口。(1)抽象方法和抽象类的定义一般方法:public cl...

类和接口

面向对象编程(OOP)现在即将结束。在这个总结中,我们将介绍两个重要的概念。

除了类,java中还有两个概念:抽象类和接口。有很多值得学习的东西。在我们理解和思考它们之前,让我们向您展示如何在java中定义抽象类和接口。

(1)抽象方法和抽象类的定义

一般方法:

public class Ani***l { public void eat(){System.out.println("Ani***l is eating.");}

抽象方法:

public abstract class Ani***l { abstract void eat();}

抽象void eat();移除方法体并添加抽象关键字是一种抽象方法。如果类中有抽象方法,abstract也必须添加到类的声明中,才能成为抽象类。我们要注意,抽象方法没有方法体,所以不能直接调用。正是因为抽象方法没有方法体,所以我们不能直接构造一个抽象类。

其实值得我们思考的问题是,没有方法体的方法有什么用?答案是【同意】。

我们不能【直接构造抽象类】,但是子类可以继承抽象类,必须重写抽象方法,除非子类也是抽象类。这样,所有的子类都会有共同的约束,父类已经实现的方法也可以被所有的子类重用。

顾名思义:

public abstract class Ani***l { abstract void eat();}

这个抽象方法用来约束子类,所以子类必须实现这个方法。除了抽象方法,抽象类还可以有普通方法。

public abstract class Ani***l { abstract void eat(); public void print(){ System.out.println("I'm an Ani***l!"); }}

抽象类不能直接实例化。当类被实例化时,意味着对象可以调用类中的属性或方法。但是抽象类中有抽象方法,抽象方法没有方法体,没有方法体就不能调用。既然方法不能调用,那么如何生成实例化的对象呢?

像其他类一样,抽象类也可以有自己的成员变量:

public abstract class Ani***l { private String name;}

既然有成员变量,我们可以大致猜测抽象类是可以构造的,因为属性必须通过new分配给memory 空才能赋值。

然后抽象类中一定有构造方法,实例化的过程就是属性赋值的过程!

看一下下面的例子:

public abstract class Ani***l { // 但是我们不能直接new public Ani***l(){ System.out.println("ani***l has created!"); } abstract void eat(); public void print(){ System.out.println("I'm an Ani***l!"); }}public class Cat extends Ani***l { public Cat(){ System.out.println("cat has created!"); } @Override void eat() { System.out.println("cat is eating!"); } public static void ***in(String[] args) { new Cat(); }}结果:ani***l has created! cat has created!

这个过程说明了在创建子类的时候,父类还是会被创建,抽象类只有在创建子类的时候才会被创建。

【小问题】:抽象类可以final声明吗?

抽象类的目的是允许子类继承。当一个职业被final修饰时,它就失去了这个能力。结果当然是不行了。

总结

1.抽象方法必须是公共的或受保护的(因为如果是私有的,就不能被子类继承,子类也不能实现这个方法)。默认情况下,它是公共的;

2.抽象类不能直接实例化,需要子类以向上转化的方式处理;

3.抽象类必须有子类,这些子类由扩展继承。子类只能继承一个抽象类

4.子类(如果不是抽象类)必须覆盖抽象类中的所有抽象方法(如果子类没有实现父类的抽象方法,子类也必须定义为抽象类。);

(2)接口的定义

事实上,接口是比抽象类更高级的抽象。当然,抽象类是比类更高级的抽象。接口中只能有方法的定义,而不能有实现:

public abstract class Ani***l { /** * 呼吸的方法 */ public abstract void breath(); /** * 吃的方法 */ public abstract void eat();}

我们可以更优雅地表达它:

public inte***ce Ani***l { /** * 呼吸的方法 */ void breath(); /** * 吃的方法 */ void eat();}

不需要Abstrac,但是我们需要使用关键字inte***ce,我们称之为[inte***ce]。

抽象方法可以在接口中定义,但是不能有实例字段,也不能有方法实现(静态)。在java8之后,可以在接口中定义默认方法。这个先说一会儿。编写接口的目的是规定和标准化类的一些能力。接口不能实例化,也没有构造函数。

接口中的方法默认是公共的,我们也推荐使用默认的,也就是我们定义接口的时候,不需要写它的权限修饰符。但是因为接口是契约,是子类必须具备的某种能力,需要子类来实现,所以在写借口的时候,我们推荐使用javadoc来注释接口。

接口是多实现的。一个类可以实现多个接口,但它只能继承一个类。接口也可以相互继承。

(1)深刻理解

我们学习了几天面向对象。

这是一种遗传,狗是一种动物。人也是人.

实现了能做关系,这反映了一个类的能力。通过实现多个接口,可以聚合多种功能。

举个例子:

鸟会飞,飞机也会飞。它们有功能性品质吗?不完全是。那时候,他们都能飞了。

我们可以在设计中设置一个接口,接口有一个Y方法定义。

接口可以用很多方法实现,所以除了飞行接口,鸟和飞机还可以实现很多其他接口。这意味着他们可以做很多事情。

类是模板设计,而接口是契约设计。

当设计一个抽象类时,相同的实现方法通常在父类中被抽象,而子类独立地实现那些不同的实现。

【做好顶层设计】

中央和我规划好蓝图,做好顶层设计,做好具体落实,只要走党的路线就行。

再举个例子,比如食物链。动物会吃其他动物,也会被其他动物吃。

//动物public inte***ce Ani***l { /** * 吃的方法 */ void eat(Ani***l ani***l); /** * 获取名字 * @return */ String getName();}//老虎public class Tiger implements Ani***l { @Override public void eat(Ani***l ani***l) { System.out.println(this.getName() + "吃了" + ani***l.getName()); } @Override public String getName() { return "tiger"; }}//狼public class Wolf implements Ani***l { @Override public void eat(Ani***l ani***l) { System.out.println(this.getName() + "吃了" + ani***l.getName()); } @Override public String getName() { return "wolf"; }}//羊public class Sheep implements Ani***l { @Override public void eat(Ani***l ani***l) { System.out.println(this.getName() + "吃了" +ani***l.getName()); @Override public String getName() { return "sheep"; } public static void ***in(String[] args) { Ani***l tiger = new Tiger(); Ani***l wolf = new Wolf(); Ani***l sheep = new Sheep(); wolf.eat(sheep); tiger.eat(wolf); }}结果://wolf吃了sheep//tiger吃了wolf

在公司内部,牛逼的人写界面。接口更多的是设计,实现更多的是搬砖。

本文来自清杉投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/523703.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 04-28
下一篇 04-28

相关推荐

  • java项目开发案例经典 java初学者简易小程序

    项目–吃货联盟一、项目准备:1.开发环境:JDK1.8IntelliJ IDEA2.技术要点分析:能理解程序基本概念 – 程序会使用变量、数据类型会使用顺序、选择、循环、跳转语句编写程序会使用数组3.任务描述:只要动动手指,就能送餐上门。“网上订餐受到现代人的青睐。现在,开发了一个

    2023-07-28 08:47:01
    708 0
  • java创建数组的几种方式 java编写图形界面程序

    数组是一组具有相同数据类型的数据。作为对象,new关键字允许用于内存分配。首先,熟悉一维数组的创建和使用。有两种方法可以声明一维数组:元素类型数组名称[];元素类型[]数组名称;元素类型决定数组的数据类型,在java中可以是任意数据类型,声明一个一维数组,比如int arr

    2023-07-27 04:07:01
    981 0
  • 如何安装java运行环境 java环境配置教程

    手动安装可以让用户更好地控制Java运行时环境。使用Linux发行版的包管理工具很容易安装Java包。但是,有时候需要手动安装Java。这对于Tomcat或JBoss等基于Java的应用服务器的管理员来说尤其重要。许多开源和专有软件产品依赖于这些服务。还是开发人员运行时套件?Java虚拟机(

    2023-07-26 08:27:01
    539 0
  • java是什么软件有什么作用 深入解析Java编程语言

    很多人或多或少和我一样。当我偶然在电视上看到程序员往电脑里敲一串代码的时候,我会忍不住惊叹他们,想象自己有一天也能这样。是的,有一天你也可以这样做!我们来看看到底什么是J***A?为什么学习?学习有什么用?让我给你看看2009年的计算机语言排名1。什么是JavaJava是一

    2023-07-26 04:56:01
    150 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信