java面向对象基础概念

一、重载

  ⽅法名称必须相同。

  参数列表必须不同(个数不同、或类型不同、参数类型排列顺序不同等)。
  ⽅法的返回类型可以相同也可以不相同。
  仅仅返回类型不同不⾜以成为⽅法的重载。
  重载是发⽣在编译时的,因为编译器可以根据参数的类型来选择使⽤哪个⽅法。

二、重写

  重写的⽅法必须要和⽗类保持⼀致,包括返回值类型,⽅法名,参数列表 也都⼀样。

  重写的⽅法可以使⽤ @Override 注解来标识
  ⼦类中重写⽅法的访问权限不能低于⽗类中⽅法的访问权限。

三、多态

  多态指的是同⼀个⾏为具有多个不同表现形式。是指⼀个类实例(对象)的相同⽅法在不同情形下具有不同表现形式。封装和继承是多态的基础,也就是说,多态只是⼀种表现形式⽽已。

  如何实现多态?多态的实现具有三种充要条件
 继承
重写⽗类⽅法
⽗类引⽤指向⼦类对象

四、接口

  接⼝相当于就是对外的⼀种约定和标准,这⾥拿操作系统举例⼦,为什么会有操作系统?就会为了屏蔽软件的复杂性和硬件的简单性之间的差异,为软件提供统⼀的标准。

- interface 接⼝是⼀个完全抽象的类,他不会提供任何⽅法的实现,只是会进⾏⽅法的定义。
- 接⼝中只能使⽤两种访问修饰符,⼀种是 public ,它对整个项⽬可⻅;⼀种是 default 缺省值,它只具有包访问权限。
- 接⼝只提供⽅法的定义,接⼝没有实现,但是接⼝可以被其他类实现。也就是说,实现接⼝的类需要提供⽅法的实现,实现接⼝使⽤ implements 关键字来表示,⼀个接⼝可以有多个实现。

接⼝不能被实例化,所以接⼝中不能有任何构造⽅法,你定义构造⽅法编译会出错。

- 接⼝的实现⽐如实现接⼝的全部⽅法,否则必须定义为 抽象类 ,这就是我们下⾯要说的内容

五、抽象类

  抽象类是⼀种抽象能⼒弱于接⼝的类,在 Java 中,抽象类使⽤ abstract 关键字来表示。如果把接⼝形容为狗这个物种,那么抽象类可以说是⽑发是⽩⾊、⼩体的品种,⽽实现类可以是具体的类,⽐如说是博美、泰迪等。

- 如果⼀个类中有抽象⽅法,那么这个类⼀定是抽象类,也就是说,使⽤关键字 abstract 修饰的⽅法⼀定是抽象⽅法,具有抽象⽅法的类⼀定是抽象类。实现类⽅法中只有⽅法具体的实现。
- 抽象类中不⼀定只有抽象⽅法,抽象类中也可以有具体的⽅法,你可以⾃⼰去选择是否实现这些⽅法。
- 抽象类中的约束不像接⼝那么严格,你可以在抽象类中定义 构造⽅法、抽象⽅法、普通属性、⽅法、静态属性和静态⽅法
- 抽象类和接⼝⼀样不能被实例化,实例化只能实例化 具体的类

六、class类,获取类的实例方式

  • Class.class 的形式会使 JVM 将使用类装载器将类装入内存(前提是类还没有装入内存),不做类的初始化工作,返回 Class 对象。

  • Class.forName() 的形式会装入类并做类的静态初始化,返回 Class 对象。

  • getClass() 的形式会对类进行静态初始化、非静态初始化,返回引用运行时真正所指的对象(因为子对象的引用可能会赋给父对象的引用变量中)所属的类的 Class 对象。

静态属性初始化是在加载类的时候初始化,而非静态属性初始化是 new 类实例对象的时候初始化。它们三种情况在生成 Class 对象的时候都会先判断内存中是否已经加载此类。

七、JAVA语言的特点
1、java是一门面向对象的编程语言(⾯向对象(Object Oriented) 是⼀种软件开发思想。它是对现实世界的⼀种抽象,⾯向对象会把相关的数据和⽅法组织为⼀个整体来看待)
2、Java 摒弃了 C++ 中难以理解的多继承、指针、内存管理等概念;不⽤⼿动管理对象的⽣命周期。
3、Java 语⾔具有功能强⼤和简单易⽤两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架的出现,使 Java 成为越来越⽕的⼀⻔语⾔。
4、Java 是⼀⻔静态语⾔,静态语⾔指的就是在编译期间就能够知道数据类型的语⾔,在运⾏前就能够检查类型的正确性,⼀旦类型确定后就不能再更改。
5、Java 具有平台独⽴性和可移植性。
6、Java 能够容易实现多线程。
7、Java 具有⾼性能。
8、Java 语⾔具有健壮性。
9、Java 很容易开发分布式项⽬。
 
 
 

  Java 的特点
  Java 是⼀⻔ ⾯向对象 的编程语⾔
什么是⾯向对象? ⾯向对象(Object Oriented) 是⼀种软件开发思想。它是对现实世界的⼀种抽象,
⾯向对象会把相关的数据和⽅法组织为⼀个整体来看待。
相对的另外⼀种开发思想就是⾯向过程的开发思想,什么⾯向过程? ⾯向过程(Procedure
Oriented) 是⼀种以过程为中⼼的编程思想。举个例⼦:⽐如你是个学⽣,你每天去上学需要做⼏件
事情?
起床、穿⾐服、洗脸刷⽛,吃饭,去学校。⼀般是顺序性的完成⼀系列动作。
⽽⾯向对象可以把学⽣进⾏抽象,所以这个例⼦就会变为
可以不⽤严格按照顺序来执⾏每个动作。这是特点⼀。
  Java 摒弃了 C++ 中难以理解的多继承、指针、内存管理等概念;不⽤⼿动管理对象的⽣命周期,这是特征⼆。
Java 语⾔具有功能强⼤和简单易⽤两个特征,现在企业级开发,快速敏捷开发,尤其是各种框架
的出现,使 Java 成为越来越⽕的⼀⻔语⾔。这是特点三。
Java 是⼀⻔静态语⾔,静态语⾔指的就是在编译期间就能够知道数据类型的语⾔,在运⾏前就能
够检查类型的正确性,⼀旦类型确定后就不能再更改,⽐如下⾯这个例⼦。
class student {
void student_wakeUp(){...}
void student_cloth(){...}
void student_wash(){...}
void student_eating(){...}
void student_gotoSchool(){...}
}
1
2
3
4
5
6
7
class student(){
void wakeUp(){...}
void cloth(){...}
void wash(){...}
void eating(){...}
void gotoSchool(){...}
}
1
2
3
4
5
6
7
静态语⾔主要有 Pascal, Perl, C/C++, JAVA, C#, Scala 等。
相对应的,动态语⾔没有任何特定的情况需要指定变量的类型,在运⾏时确定的数据类型。⽐如有Lisp,
Perl, Python、Ruby、JavaScript 等。
从设计的⻆度上来说,所有的语⾔都是设计⽤来把⼈类可读的代码转换为机器指令。动态语⾔是为了能
够让程序员提⾼编码效率,因此你可以使⽤更少的代码来实现功能。静态语⾔设计是⽤来让硬件执⾏的
更⾼效,因此需要程序员编写准确⽆误的代码,以此来让你的代码尽快的执⾏。从这个⻆度来说,静态
语⾔的执⾏效率要⽐动态语⾔⾼,速度更快。这是特点四。
  Java 具有平台独⽴性和可移植性
Java 有⼀句⾮常著名的⼝号: Write once, run anywhere ,也就是⼀次编写、到处运⾏。为什么
Java 能够吹出这种⽜批的⼝号来?核⼼就是 JVM 。我们知道,计算机应⽤程序和硬件之间会屏蔽很多
细节,它们之间依靠操作系统完成调度和协调,⼤致的体系结构如下
那么加上 Java 应⽤、JVM 的体系结构会变为如下
public void foo() {
int x = 5;
boolean b = x;
}
1
2
3
4
Java 是跨平台的,已编译的 Java 程序可以在任何带有 JVM 的平台上运⾏。你可以在 Windows 平台
下编写代码,然后拿到 Linux 平台下运⾏,该如何实现呢?
⾸先你需要在应⽤中编写 Java 代码;
⽤ Eclipse 或者 javac 把 Java 代码编译为 .class ⽂件;
然后把你的 .class ⽂件打成 .jar ⽂件;
然后你的 .jar ⽂件就能够在 Windows 、Mac OS X、Linux 系统下运⾏了。不同的操作系统有不同的
JVM 实现,切换平台时,不需要再次编译你的 Java 代码了。这是特点五。
  Java 能够容易实现多线程
Java 是⼀⻔⾼级语⾔,⾼级语⾔会对⽤户屏蔽很多底层实现细节。⽐如 Java 是如何实现多线程的。从
操作系统的⻆度来说,实现多线程的⽅式主要有下⾯这⼏种
在⽤户空间中实现多线程
在内核空间中实现多线程
在⽤户和内核空间中混合实现线程
⽽我认为 Java 应该是在 ⽤户空间 实现的多线程,内核是感知不到 Java 存在多线程机制的。这是特
点六。
  Java 具有⾼性能
我们编写的代码,经过 javac 编译器编译称为 字节码(bytecode) ,经过 JVM 内嵌的解释器将字节码
转换为机器代码,这是解释执⾏,这种转换过程效率较低。但是部分 JVM 的实现⽐如 Hotspot JVM
都提供了 JIT(Just-In-Time) 编译器,也就是通常所说的动态编译︎器,JIT 能够在运⾏时将︎热点代
码编译机器码,这种⽅式运⾏效率⽐较⾼,这是编译执⾏。所以 Java 不仅仅只是⼀种解释执⾏的语
⾔。这是特点七。
  Java 语⾔具有健壮性
Java 的强类型机制、异常处理、垃圾的⾃动收集等是 Java 程序健壮性的重要保证。这也是 Java 与 C
语⾔的重要区别。这是特点⼋。
  Java 很容易开发分布式项⽬
Java 语⾔⽀持 Internet 应⽤的开发,Java 中有 net api,它提供了⽤于⽹络应⽤编程的类库,包括
URL、URLConnection、Socket、ServerSocket等。Java的 RMI(远程⽅法激活) 机制也是开发分布
式应⽤的重要⼿段。这是特点九。

 
 
posted @ 2021-04-05 00:27  炼金术士0z  阅读(87)  评论(0编辑  收藏  举报