首页 > 编程语言 >java记录

java记录

时间:2022-11-06 12:34:12浏览次数:44  
标签:java 记录 void 接口 public 抽象类 class

java记录

java 包 package

相同包中的类名不能重复,不同包中的类名可以重复

包声明唯一,且位于第一行

import 关键字

import 可以有多行 用于导入某一个类

导入 某个包里的所有类 import package.*;

.java与.class文件区别

.java文件是编译前的文件(用javac命令去编译可以编译出.class文件),.class文件是编译后的文件(运行时直接 java 加名称即可,不需要加后缀)。

image-20221106122426634

Java跨平台

JVM屏蔽了具体操作系统平台相关信息,实现程序与操作系统隔离。

用java写hello world 文件名必须与public类名一致
class Helloworld{
    public static void main(String [] args)
    {
        System.out.println("hello,world");
    }
}

image-20221021213406932

这也可以看出来 .java 文件与 .class文件差异比较大

补充一下:

linux 下用命令行写入多行

cat <<EOF >Helloword.java
内容
EOF

编译完后的Java程序 直接 java Helloword 即可 不用加后缀

image-20221021213751784

编译完成后去运行程序时 对.java源文件没有要求,但 .class文件必须保留且不可修改。

System.out.println()

输出流 会自动换行

image-20221022165648835

类 Class

命名规则 大驼峰原则(这样命名会增大代码的可读性)

字段 Field

命名规则遵循小驼峰原则

方法 Method

main方法是程序的入口与c语言的 main 性质类似 所以有且仅有一个

构造方法
可变参数方法

参数数量不固定

public class Person{
    int age;
    String name;
    public Person(String name )
    {
        this.age = 10;
        this.name = name;
    }
    public static double average(int... nums)
    {
        int sum = 0;
        for(int num : nums){
            sum+=num;
        }
        double average = sum/nums.length;
        return average;
    }
    public static void main(String [] args)
    {
        Person mine = new Person("chen");
        //System.out.println(mine.age + mine.name);
        double a = average(1,2,3);
        System.out.println(a);
    }

}
is-a关系

子类与超类的关系

葡萄与水果的关系

public class Fruit{
    public void eat();  //Fruit具有eat的方法
}

class Peach extends Fruit{ //Peach是Fruit的子类
    public void pink();
    //Peach具有pink的方法,但是也继承了eat的方法
}

Fruit peach1 = new Peach(); //Peach是Fruit的子类,存在is-a关系
Peach peach2 = new Peach();  //正常创建对象
Peach fruits = new Fruit(); //由于is-a关系不可逆,因此这行代码是错误的!

java类成员的四种访问权限

public

protected

private

default

public<default<protected<private

image-20221022180418738

一个文件多个类

我的文件名为 Person.java也可以运行成功

因为文件名必须与public的类名保持一致

class Country {
    String name;
    void value() {
        name = "China";
    }
}

class City extends Country {
    String name;
    void value() {
        name = "Shanghai";
        super.value();  //调用父类的方法
        System.out.println(name);
        System.out.println(super.name);
    }

    public static void main(String[] args) {
        City c=new City();
        c.value();
    }
}

父子类的转换
class Parents{
    ......
}

class Child extends Parents{
    ......
}

public class Cast{
    public static void main(String[] args){
        //向上转换
        Child child1 = new Child();
        Parents parents1 = child1;   //由Child类型的child1变为Parents类型的parents1
        //向下转换
        //只有当父类引用已经指向子类实例时才能进行向下转换
        Parents parents = child1;  //parents指向了Child的一个实例
        //向下转换强制要求在括号内写入子类型
        Child child2 = (Child) parents;  //由Parents类型的parents变为Child类型的child2
    }
}

静态导入
import static java.util.Calendar.MONDAY;  //导入java.util.Calendar类中的静态字段MONDAY

public class Monday {
    public static void main(String[] args){
        System.out.println(MONDAY);  //不需要使用类名
    }
}

抽象类
抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。
抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
接口(interface)与类的区别
接口类似于类,但接口的成员都没有执行方式,它只是方法、属性、事件和索引的组合而已,并且也只能包含这四种成员;类除了这四种成员之外还可以有别的成员(如字段)。
不能实例化一个接口,接口只包括成员的签名;而类可以实例化(abstract类除外)。
接口没有构造函数,类有构造函数。
接口不能进行运算符的重载,类可以进行运算符重载。
接口的成员没有任何修饰符,其成员总是公共的,而类的成员则可以有修饰符(如:虚拟或者静态)。
派生于接口的类必须实现接口中所有成员的执行方式,而从类派生则不然。
特性
接口中每一个方法都是隐式抽象的,接口中的方法会被隐式的指定为public abstract(只能是public abstract,其他修饰符都会报错)。
接口中可以含有变量,但是接口中的变量会被隐式的指定为public static final变量(并且只能是public,用private修饰会报编译错误)。
接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。
抽象类与接口的区别
抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的。
接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法。
一个类只能继承一个抽象类,而一个类却可以实现多个接口。
使用
interface Interface{
    //Interface接口中声明了一个未完成具体实现的echo方法
    void echo();//接口中的方法会被隐式的指定为public abstract
}
//ComeTrue是Interface接口的一个实现类
public class ComeTrue implements Interface{
    //在ComeTrue类中完成了echo方法的具体实现(重写)
    //实现类必须实现接口所有的方法,否则就要声明为abstract抽象类
    //一个实现类倘若实现了借口的所有方法,则这个实现类可称为基类(Base Class)
    public void echo(){
        System.out.println("Function 'echo' has been come true!");
    }
    public static void main(String[] args){
        ComeTrue test = new ComeTrue();
        test.echo();
    }
}

interface Interface1{
    //Interface接口中声明了2个未完成具体实现的echo方法
    void read();
    void write();
}
//IntDemo只实现了Interface接口的一个方法
abstract class IntDemo implements Interface1{
    //在IntDemo类中仅完成了echo一个方法的实现,倘若没有声明IntDemo类为抽象类,编译时则会出现报错:
    public static void echo(){
        System.out.println("Only function 'echo' has been come true!");
    }
    public static void main(String[] args){
        echo();
    }
}

标签:java,记录,void,接口,public,抽象类,class
From: https://www.cnblogs.com/yhchen-blogs/p/16862383.html

相关文章

  • Java8新特性:函数式编程
    1.概述函数式编程学习目的:能够看懂公司里的代码大数据量下处理集合效率更高代码可读性高消灭嵌套地狱函数式编程思想:面向对象思想需要关注用什么对象完成什么事......
  • 深入理解Java内存区域(最新版面试题)
    1、什么是JVM?JVM(JavaVirtualMachine)是用于运行Java字节码的虚拟机,包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM......
  • java创建文件,查看文件练习
       查看文件 ......
  • Day3:学习Java的第一步:Hello World!
    HelloWorld新建一个文件夹存放代码新建一个JAVA文件文件后缀名为.javaHello.java打开文件扩展名,即可查看到文件类型运行文件:右键Hello.java文件用notep......
  • Java方法
    Java方法何谓方法?System.out.println()那么它是什么呢?Java方法是语句的集合,它们在一起执行一个功能方法是解决一类问题的步骤的有序组合方法包含于类或对象中......
  • JAVA8-Lambda- anyMatch&allMatch(检查流是否满足给定的条件)
    一、anyMatch(检查流中是否至少包含一个满足条件的元素)代码示例:publicstaticvoidmain(String[]args){ArrayList<Student>list=newArrayList<>();lis......
  • Java运行时数据区域
     时间:2022/11/05 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有些区域随着......
  • Java Map
    需求:使用staticmap存常量publicstaticMap<String,String>articleMapOne;static{articleMapOne=newHashMap<>();articleMapOne.put("ar01","Introto......
  • JAVA8-Lambda-FindFirst(获取列表中出现的第一条记录)
    寻找列表中的第一个元素描述:代码示例中list列表存在三条记录,findFirst是找出第一个出现的记录信息。publicstaticvoidmain(String[]args){ArrayList<Stu......
  • Java Class
    Staticstaticmethodstaticmethod指的是Class的方法,而不是instance的方法publicclassPatterns{publicstaticMap<String,String>patternsMap;static......