Java基础知识

Final关键字

1、final是Java中的一个关键字

2、final表示最终的、不可变的

3、final可以修饰变量以及方法,还有类等

4、final修饰的方法无法被覆盖,被重写

5、final修饰的类无法被继承

6、final与能否调用无关,final表示最后的,不能改变该内容

7、final修饰的局部变量一旦赋值不能重新赋值

Final修饰的变量只能赋一次值

8、final修饰的引用:该引用只能指向一个对象,并且他只能永远指向该对象,无法再指向其他对象;并且在该方法执行过程中该引用指向该对象之后,该对象不会被回收直到该方法执行结束,才会释放空间。

虽然final修饰的引用指向A后不能指向对象B,但是对象A中的数据可以被修改

9、final修饰的实例变量(构造方法执行的过程中赋值),系统不管赋默认值,要求程序员必须手动赋值,在变量后赋值可以,在构造方法中赋值也可以。

10、final修饰的变量一般添加static修饰

Static final联合修饰的变量称为“常量”,常量名建议全部大写,每个单词之间用下划线衔接。

常量:实际上和静态变量一样,区别在于常量的值不能变,常量和静态变量都是存储在方法区,并且都是在类加载时初始化

抽象类和接口以及抽象类和接口的区别

1、抽象类:类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象(无法实例化)

2、抽象类也属于引用数据类型

3、抽象类怎么定义:语法-(修饰符列表)abstract class 类名{

类体;

}

 

4、抽象类是无法实例化的,无法创建对象,所以抽象类是用来继承的。

5、final和abstract不能联合使用,不能同时出现

6、抽象类的子类可以是抽象类

7、抽象类虽然无法实例化但是抽象类有构造方法,这个构造方法是供子类使用的

8、抽象类关联到一个概念,抽象方法的概念,

抽象方法:没有实现的方法,没有方法体的方法

例如:public abstract void dosome{

}

9、抽象类中不一定有抽象方法,但抽象方法必须出现在抽象类中

10、重要结论:一个非抽象类继承抽象类,必须把抽象类中的抽象方法实现了(覆盖或是重写,也就是实现)

例题:Java语言中凡是没有方法体的方法都是抽象方法

错误的,object中就有许多没有方法体的非抽象类

接口(interface)

1、接口也是一种引用数据类型,编译之后也生成.class文件

2、接口是完全抽象的(抽象类是半抽象的)或者也可以说接口是特殊的抽象类

3、接口怎么定义,语法是什么?

(修饰符列表) interface 接口名{

}

4、一个接口可以继承多个接口

interface A{

}

interface B extends A{

}

Interface c extends A,B{ //一个接口可以继承多个接口

}

5、接口中只包含两部分内容:一部分是常量,一部分是抽象方法。接口中没有其他内容只有以上两部分

6、接口中所有的元素都是public修饰的,都是公开的

7、接口中的抽象方法定义时,public abstract修饰符可以省略

8、接口中的方法都是抽象方法所以接口中的方法不能有方法体(不能有{})

9、接口中的常量public static final可以省略不写,接口中的所有变量都是常量(值不能发生改变)

10、类和类之间叫做继承(extends),类和接口之间叫做实现(interface)(任可以将实现看做继承)

11、当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(implements相当于继承的extends)(覆盖、重写)

12、重点:一个类可以实现多个接口(interface A implements B,C{})

13、extends和implements可以共存,extends在前implements在后

14、使用接口写代码时,可以使用多态(父类型引用指向

子类型对象)

例:public class Test{

Public static void main(String[] args ){

}

} //动物类父类

class Animal{

}

//可飞行的接口,接口通常提取的是行为动作

interface Flyable{

Void fly();

}

class cat extends Animal implements Flyable{

public void fly(){

system.out.println(“fly”)

}

}

15、接口在开发中的作用,类似于多态在开发中的作用,

多态:面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力,符合ocp的开发原则。(接口加上多态才可以达到降低耦合度的效果)  

16、类型和类型之间的关系:is a、has a、like a

(1)is a:

cat is a Animal(猫是一个动物)

凡是能够满足is a 的表示:继承关系(A extends B

)

(2)has a:

I has a pen(我有一只笔)

凡是能满足has a关系的表示:关联关系

关联关系通常以“属性”的形式存在

(3)like a:

Cooker like a foodmenu(厨师像一个菜单一样)

凡是能满足like a关系的表示“实现关系”

实现关系通常是:实现接口(A implements B)

17、抽象类和接口有什么区别:

(1)抽象类是半抽象的,接口是完全抽象的

(2)抽象类中有构造方法,接口中没有构造方法

(3)接口和接口之间支持多继承,类和类之间只支持单继承

(4)一个类可以同时实现多个接口,一个抽象类只能继承一个类(单继承)

(5)接口中允许出现常量和抽象方法

关于Java语言中的package和import机制

1、为什么要使用package?

 Package是Java中包机制,包机制的作用是为了方便程序的管理。不同功能的类分别存放在不同的包下(按照功能划分的,不同的软件包具有不同的功能)

2、package怎么用?

package 是一个关键字,后面加包名,例如:

package com.bjpowernode.javase.chapter17;

注意:package语句只允许出现在Java语句的第一行。

3、包名的命名规范:一般采用公司域名倒叙的方式(因为公司域名具有唯一性)

例如:公司域名倒叙+项目名+模块名+功能名

4、带有package的Java程序怎么编译,怎么运行?

例:

Package com.bjpowernode.java.chapter17;

Public class HelloWorlrd{

Public static void main(String[] args){

System.out.println(“Hello world!”);

}

}

采用javac . HelloWorld.java无法编译,

此时的类名是com.bjpowernode.java.chapter17.HelloWorld而不是HelloWorld

编译:javac.-d . HelloWorld.java

注释:javac 负责编译的命令

.d 带包编译(代表编译之后生成的东西放到当前目录下;.代表当前目录)

.HelloWorld.java 被编译的Java文件名

5、关于import的使用

Package com.bjpowernode.java.chapter17;

Public class Test{

Public static void main(String[] args){

/*com.bjpowernode.java.chapter17 w = new com.bjpowernode.java.chapter17*/太麻烦

}

}

import什么时候使用?如何使用?

(1)A类中使用B类

A类和B类都在同一个包下,不需要使用import

A类和B类不在同一个包下,需要使用import

(2)使用方法

import只能出现在package语句之下,class声明语句之上

import语句还可以采用*的方式(*代表某个或者某些类名)

Package com;

import com.bjpowernode.java.chapter17

(或者import com.bjpowernode.java.*)

Public class Test{

Public static void main(String[] args){

HelloWorld w = new HelloWorld;

}

}

6、package和import

(1)package:

第一、出现在Java源文件第一行

第二、带有包名怎么编译:java –d . xxx.java

第三、怎么运行: java 完整类名

(2)import

第一、import什么时候不需要:java.lang不需要;同包下不需要;其它一律需要

第二、怎么用:import 完整类名;

import 完整包名

活动地址:CSDN21天学习挑战赛

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值