java接口文件定义类_Java入门笔记(四)类、包和接口

一、类 class

public class Person{

String name;

int age;

Person(String name, int age){

this.name = name;

this.age = age;

}

void sayHello(){

System.out.println("Hello!");

}

}

1. 属性

a. 字段

也就是成员变量,在构造方法中进行初始化,没有指针的概念,需要访问时直接使用p.name的方法

仍旧可以用this.表示域内的变量

b. 方法

构造方法

constructor,方法名与类名相同,如果不定义构造方法,系统会定义一个默认构造方法

this中还可以使用this调用另一构造方法,如在person类中添加

Person(){

this("lilei", 0); // 这条调用语句要放在第一行

}

方法重载

方法的参数个数或者参数的类型不同,通过重载可以实现多态(polymorphism)

c. 修饰符

访问修饰符()+其他修饰符(abstract等)

访问修饰符

public(非子类、子类、同包类、自身)、protected(子类、同包类、自身)、private(自身),默认(同包类、自身)

字符用private修饰从而更好地封装和隐藏,但是可以用setter和getter暴露出来,bean规范

其他修饰符

static

静态的,可以修饰内部类和成员

不保存在某个对象的内存中,而是存储在公共存储单元中,如System类的in和out

属于整个类,不能操纵某个对象的成员变量,只能调用static域或者static方法

不能访问实例变量,不可以使用this和super

使用类名直接调用static方法

import static

final

最终的,不可改变的,可以修饰类、成员、局部变量

如果修饰类,表示这个类不可以被继承

如果修饰方法,就是不能被子类覆盖的方法

如果修饰字段,那么一旦给定值,就不可以修改,且必须显式赋值(定义时赋值或构造函数总能赋值)

如果修饰局部变量,可以从变量中取值,final a = b;

static final可以表示常量,如Integer.MAX_VALUE,如果不给初始值,就默认进行初始化

abstract

抽象的,不可实例化的,可以修饰类和成员

如果修饰类,该类不可以被实例化,不可以new

如果修饰方法,则不需要实现,只声明即可

如果一个类中包含了抽象方法,那么这个类就要被声明为abstract类,而在子类中实现,如果子类中仍然没有实现,那么子类也需要abstract

2. 继承

class Teacher extends Person{

String school;

String subject;

void teach(){}

}

子类(subclass)、父类或超类(superclass)

父类包括所有直接或间接被继承的类,一个子类只能直接继承于1个类,子类可以继承、修改、添加父类的状态和行为,但是构造方法是不能够被继承的

没有继承关系则类默认为java.lang.Object对象

a. 方法覆盖 Override

@Override

void sayHello(){

System.out.println("Hello everybody!");

}

b. 方法重载

void sayHello(Teacher another){

System.out.println("Hey!");

}

c. super

可以用来访问父类的字段和方法,构造方法不能被继承,但是使用super可以调用父类的构造方法

Teacher(String name, int age, String school){

super(name, age);

...

}

d. 父类子类的转换

子类对象可以视为父类的一个对象

父类对象不能当做子类的对象

如果一个方法的形参是父类对象,调用方法时可以用子类

如果父类引用的实际上是一个子类对象,那么可以强制类型转换为子类对象的引用,如Person liu = new Teacher(xxx);可以使用Teacher wang = (Teacher) liu;

二、包 package

import package[.pkg[.xxxx]]

包实际是为了解决名字空间(存储路径)问题和可访问性问题(同一个包里面的各个类可以互相访问)

包层次的根目录由CLASSPATH决定,如果没有package语句,就是无名包

java编译器自动导入java.lang

javac可以将.class文件放入想用的目录,使用-d指明包的根目录,运行程序时指明含有main的类名

java和javac可以用-classpath指明引用的类的路径,也可以设置系统变量

三、接口 Interface

接口就是一个高度抽象的类,用来描述某种特征,所有的方法都是public abstract,java8以上还可以声明static方法以及具有实现的方法

实现接口时需要使用implements,可以实现多继承,与继承是无关的

面向接口编程而不是面向实现,Interface = new class()

可以实现不相关类的相同特征,通过接口可以指明多个类需要实现的方法

接口中定义的常量可以被实现该接口的多个类共享,通常全部大写

interface Transport{

int INITIAL = 100;

double getSpeed();

}

public Car implements Transport{}

四、语法小结

完整的类的定义

[public] [abstract | final] class [extends ]

[implements] [InterfaceNameList(,分割)]{

[public | protected | private] [static] [final] [transient] [volatile] type variableName;

[public | protected | private] [static] [final | abstract] [native] [synchronized] returnType methodName()[throws]

}

完整的接口的定义

[public] interface InterfaceNmae [extends superInterfaceList]{

type constantName = Value;

returnType methodName();

|

固定声明方式

构造方法

className(){}

main方法

public static void main(String args[])

finalize()方法

protected void finalize() throws throwable{}

完整java文件

package packageName; // 只能有1个

import packageName.xxx.*;

public classDefinition{} // public的类的定义 0或1个

interfaceDefinition and classDefination //0或多个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序[渲染层网络层错误] failed to load image_游戏中水的渲染技术

水的渲染一直是图形学需要解决的问题,本篇博客主要介绍用傅里叶变换算法实现的水反射,也是一种假反射效果,目的是优化效率。实现的效果如下图所示:使用傅里叶系数来表示地形高度的假反射效果,在我们开发的游戏中使用水…

pip install 报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xb5 in

当python在window环境中通过pip安装pandas报标题这样的错,主要是因为python默认编码格式是:ascii 在https://www.python.org/dev/peps/pep-0100/文章中有介绍 解决方法:在python/lib/site.py中加入 import sysreload(sys)sys.setdefaultenc…

jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

JDBC概述APIJDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使…

怎样判断电饭锅温度传感器的好坏?_空调温度传感器的作用与检测。

温度传感器是指对温度进行感应,并将感应的温度变化情况转换为电信号的功能部件。我们在练习温度传感器检测代换之前,要先对温度传感器的安装位置、结构特点和工作原理有一定的了解。1、温度传感器的安装位置及结构在空调器室内机中,通常设有两…

【codeforces 507E】Breaking Good

【题目链接】:https://vjudge.net/contest/164884#problem/D 【题意】 给你一张图; 图中有些路是完好的;但有些路还没修好; 先不管路有没有修好; 问你从起点到终点的最短路; 如果最短路上有没修好的路,那么你要把它修好; 而不在最短路上的,如果是完好的路,你需要把它摧毁…

java去掉图片边框颜色_sharp 去除图片边框

trim接受参数是颜色相似度, 并不能指定边框颜色, 所以有可能会误删除内容, 需要注意trim 需要转为buffer或者文件后再次操作, 否则图片信息不变从剪裁效果来看, 精度和速度都是可以的const sharp require("sharp");const path "./html/a.png";const outp…

java mail 不用密码_iPhone 无需越狱,简单给 App 加密码锁

在手机上总有些小秘密,也有些APP不想被打开。由于iOS本身限制,想给APP加上密码锁,一般都是需要越狱才能实现。其实在iOS 12就加入了【屏幕使用时间】,用来更好设置APP使用时间的限额。屏幕使用时间屏幕时间功能可以协助您了解自己…

Java植物名录程序_程序员用Java语言编写多线程应用程序,程序员能控制的关键性工作有两个方面:一是编写线程的_________方法;二是建立线程实例。...

沟通的目的是打造“3G团队”,其中的“3G”具体指:“啊,时间过得真快啊!”中的“啊”活塞与气缸盖、气缸壁共同组成燃烧室,承受气缸中气体的压力,并将此压力通过活塞销和连杆传给食品是指人食用或饮用的成品和原料,以及按照传统既是食品又是( )的物品,但不…

【t090】吉祥数

Time Limit: 1 second Memory Limit: 128 MB 【问题描述】 为了迎接圣诞,信息学兴趣小组的同学在辅导老师的带领下,举办了一个盛大的晚会,晚会的第一项内容是做游戏:猜数。老师给 每位同学发一张卡片,每张卡片上都有…

spark内存溢出怎么解决_和平精英:更新需要预留6G内存,玩家抱怨手机扛不住,怎么解决?...

嗨,小伙伴们大家好呀!《和平精英》新版本终于来了哈,小伙伴们在22号上午登录游戏,就可以收到更新提示,点击进行更新就好了。或者是在各个应用商店里等待更新推送,也行哦!但是呢,每到…

php 字符串0转换bool_PHP数据类型转换(转)

PHP数据类型转换PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:•(int)、(integer):转换成整形•(float)、(double)、(real):转换成浮点型•(string):转换成字符串•(bool)、(boolean):转换成布尔…

【转】LDA数学八卦

转自LDA数学八卦 在 Machine Learning 中,LDA 是两个常用模型的简称: Linear Discriminant Analysis 和 Latent Dirichlet Allocation, 在这篇文章中我们主要八卦的是后者。LDA 是一个在文本建模中很著名的模型,类似于 SVD, PLSA …

python3安装json库-python库json快速入门

在本教程中,您将学习如何借助示例在Python中解析,读取和编写JSON。 此外,您将学习将JSON转换为dict并将其打印出来。 JSON简介 JSON (JavaScript Object Notation) 是一种用于表示结构化数据的流行数据格式。 常用于服务器和Web应用程序之间传…

python 常量 模块_Python字符串模块的有用常量

示例Python的string模块为与字符串相关的操作提供常量。要使用它们,请导入string模块:>>> import stringstring.ascii_letters:ascii_lowercase和的串联ascii_uppercase:>>> string.ascii_lettersabcdefghijklm…

PAT1132: Cut Integer

1132. Cut Integer (20) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueCutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long integers A and B. For example, after cutting Z 167334, we…

电脑字体模糊_小红书上传视频模糊?做小红书视频99%的工具都在这了

到现在小红书视频号功能已经上线快三个月了,越来越多的小伙伴开始拍视频、创作视频笔记,但是对于新接触视频的小伙伴来说,拍摄视频好像是一件很难的事,特别是不清楚该选择什么拍摄设备、不知道怎么剪辑视频,还有如何上…

Codeforces Gym101518H:No Smoking, Please(最小割)

题目链接 题意 给出一个n*m的酒店,每个点是一个房间,要将这个酒店的房间划分成为两块(一块无烟区,一块吸烟区),相邻的两个房间之间有一条带权边,权值代表空气锁的面积,如果把这条边给…

java如何实现服务降级_Hystrix服务降级

## 注意Hystrix默认的服务降级时长是1秒钟.因为网络波动,这个值在正式环境中需要调整一下.## 导入包~~~org.springframework.cloudspring-cloud-starter-netflix-hystrix2.0.1.RELEASE~~~## 启动类~~~package com.like;import org.springframework.boot.SpringApplication;impo…

谷歌浏览器不能上网_谷歌浏览器插件下载及安装教程!

emmm......这篇文章的内容非常小白,相信大部分人都会这个基本操作。但是阁主相信还有些妹子操作不来,如果还没有男朋友,那不是铁定不会安装谷歌浏览器插件么?其实“谷歌浏览器插件”这个组合,可以解决很多问题&#xf…

高级技巧之Lambda表达式

1.Lambda表达式简介 其本质上是一种匿名方法,它既没有方法名,也即没有访问修饰符和返回值类型,使用它来编写代码将会更加简洁,也更加易读。 2.使用该表达式需要配置的数据 3.传统java和使用Lambda表达式的对比 0)总结&…