首页 > 编程语言 >ACWing Java基础语法记录-类与接口

ACWing Java基础语法记录-类与接口

时间:2022-10-11 11:57:45浏览次数:55  
标签:Java String int void 接口 name public ACWing

类可以将变量、函数完美地打包在一起。

类与对象

类定义一种全新的数据类型,包含一组变量和函数;对象是类这种类型对应的实例。解释:例如在一间教室中,可以将'Student'定义成类,表示“学生”这个抽象的概念。那么每个同学就是'Student'类的一个对象(实例)。

源文件声明规则

  • 一个源文件只能有一个public类。
  • 一个源文件可以有多个非public类。
  • 源文件的名称应该和public类的类名保持一致。
  • 每个源文件中,先写package语句,再写import语句,最后定义类。

类的定义

  • public:所有对象均可以访问
  • private:只有本类内部可以访问
  • protected:同一个包或者子类中可以访问
  • 不添加修饰符:在同一个包中可以访问
  • 静态(带static修饰符)成员变量/函数与普通成员变量/函数的区别
    • 所有static成员变量/函数在类中只有一份,被所有类的对象共享;
    • 所有普通成员变量/函数在类的每个对象中都有独立的一份;
    • 静态函数中只能调用静态函数/变量;普通函数中既可以调用普通函数/变量,也可以调用静态函数/变量。
class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public String toString() {
        return String.format("(%d, %d)", x, y);
    }
}

类的继承

每个类只能继承一个类

class ColorPoint extends Point {
    private String color;

    public ColorPoint(int x, int y, String color) {
        super(x, y);
        this.color = color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String toString() {
        return String.format("(%d, %d, %s)", super.getX(), super.getY(), this.color);
    }
}

类的多态

public class Main {
    public static void main(String[] args) {
        Point point = new Point(3, 4);
        Point colorPoint = new ColorPoint(1, 2, "red");

        // 多态,同一个类的实例,调用相同的函数,运行结果不同
        System.out.println(point.toString());
        System.out.println(colorPoint.toString());
    }
}

接口

interfaceclass类似。主要用来定义类中所需包含的函数。
接口也可以继承其他接口,一个类可以实现多个接口。

接口的定义

接口中不添加修饰符时,默认为public

interface Role {
    public void greet();
    public void move();
    public int getSpeed();
}

接口的继承

每个接口可以继承多个接口

interface Hero extends Role {
    public void attack();
}

接口的实现

每个类可以实现多个接口

class Zeus implements Hero {
    private final String name = "Zeus";
    public void attack() {
        System.out.println(name + ": attack!");
    }

    public void greet() {
        System.out.println(name + ": Hi!");
    }

    public void move() {
        System.out.println(name + ": Move!");
    }

    public int getSpeed() {
        return 10;
    }
}

接口的多态

class Athena implements Hero {
    private final String name = "Athena";
    public void attack() {
        System.out.println(name + ": attack!");
    }

    public void greet() {
        System.out.println(name + ": Hi!");
    }

    public void move() {
        System.out.println(name + ": Move!");
    }

    public int getSpeed() {
        return 10;
    }
}

public class Main {
    public static void main(String[] args) {
        Hero[] heros = {new Zeus(), new Athena()};
        for (Hero hero: heros) {
            hero.greet();
        }
    }
}

标签:Java,String,int,void,接口,name,public,ACWing
From: https://www.cnblogs.com/sharycxc/p/16778736.html

相关文章

  • JavaScript高级程序设计笔记06 集合引用类型
    集合引用类型1.Object(详见c08p205)适合存储,在应用程序间交换数据创建实例:a.显式构造函数b.字面量——>不会调用构造函数(代码更少、更有封装感)函数:大量参数的情况......
  • 常用的函数式接口_Predicate接口_默认方法and与常用的函数式接口_Predicate接口_默认
    常用的函数式接口Predicate接口默认方法:and;Predicate既然是条件判断,就会存在与、或、非三种常见的逻辑关系。其中将两个Predicate条件使用“与"逻辑连接起来实现“并......
  • shell实现接口初次失败告警,恢复也发送一次通知
    1、该shell判断第一次失败告警,接口恢复发送一次通知参数:一个参数接口返回结果0表示成功1表示失败脚本详情[root@localhostbd]#morebd-new.sh#!/bin/bashw=$(c......
  • 「Java 数据结构」:手撕单链表的增删改查及大厂面试题。
    目录​​一、单链表的增删改查​​​​1、创建结点     ​​​​2、单链表的添加操作​​​​3、单链表的删除操作​​​​4、单链表的有效结点的个数​​​​二、......
  • JAVA数据类型
    JAVA数据类型基本数据类型数值类型整数型byte:一个字节short:两个字节int:四个字节long:八个字节注意:二进制0b 十进制 八进制0 十六进制0xlong类型要在数......
  • Java拦截器
    (1)浏览器发送一个请求会先到Tomcat的web服务器(2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源(3)如果是静态资源,会直接到Tomcat的项目部署目录下......
  • Java 中初始化 List 的五种方法
    1、构造List后使用List.add初始化1List<String>stringList=newLinkedList<>();2stringList.add("a");3stringList.add("b");4stringList.add("c");这是......
  • Java Style的C++容器流式处理类
    很久没有上博客园了,最近一段时间,因为工作的关系时间上比较闲,利用闲暇时间重新翻了一下丢弃很久的C++语言。C++从98、11、14、17目前已经也走到了20版本,发生了很多变化,也引......
  • IDEA jsp 写Java脚本的时候不能使用out.print()问题
    IDEAjsp写Java脚本的时候不能使用out.print()问题参考:ideajsp无法使用out.print方法_NoBug的博客-CSDN博客_ideajspout问题:  解决:File->ProjectStructure......
  • Java 多线程(五)线程状态
    一,线程五大状态:详细说明:   二,线程方法:   1.停止线程*不推荐使用JDK提供的stop(),destroy()方法【已废弃】*推荐线程自己停下来*建议使用一个标志位进......