Java面向对象
Posted v587h
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面向对象相关的知识,希望对你有一定的参考价值。
# 面向对象
### oop
![](https://img-blog.csdnimg.cn/img_convert/8fe8d14a9ee2543b1b04d30f08ee4be5.png)
本质:以类的方式组织代码,以对象的形式组织(封装)数据;
抽象
三大特性:封装 继承 多态
### 封装:
将具体的对象封装成抽象的类
认识角度:先有对象后有类,对象是具体的,类是抽象的
代码运行:先有类后有对象
brake:跳出switch,结束循环 return:结束方法
静态方法:类名.方法 --和类一起加载的
非静态方法:实例对象.---类实例化之后才存在
构造器:1.使用new关键字,本质是在调用构造器 2.用来初始化值
一旦定义了有参构造方法,要使用无参构造方法,就要显示定义一个无参构造方法
### 继承:
本质是对某一批类的抽象,从而实现对现实世界更好的建模。(extends)
Java中类只有单继承,没有多继承
子类是父类的扩展
### super:
1.super()调用父类的构造器,必须在子类构造器的第一行
2.只能出现在子类中
3.super和this 不能同时调用构造方法!
vs this
? 代表的对象不同:
? this : 本身调用者这个对象
? super:代表父类对象的引用
? 前提
? this:没有继承也可以使用
? super:只能在继承条件才可以使用
? 构造方法
? this():本类的构造
? super():父类的构造
### 方法的重写:
静态方法:方法的调用只和**左边**定义的数据类型有关
非静态方法:重写
父类的引用指向了子类
重写:需要有继承关系,子类重写父类的方法
? 1.方法名必须相同
? 2.参数列表必须相同
? 3.修饰符:范围可以扩大但不能缩小:public....
? 4.抛出的异常:范围可以缩小但不能扩大:ClassNotFoundException——————》Exception
重写,子类方法和父类必须一致,方法体不同
为什么需要重写?
? 父类的功能,子类不一定需要或者不一定满足。
Alt+Insert:Override;
### 多态
![](https://img-blog.csdnimg.cn/img_convert/5e5e95a36bef68ee4139d7a5fab03cd7.png)
一个对象的实际类性是确定的,但可以指向的引用类型就不确定了:父类的引用指向子类
对象执行那些方法主要看左边的类型,和右边关系不大!
子类重写了父类的方法,执行子类的方法。
对象能调用的方法都是自己的或者继承父类的!
父类型可以指向子类,但是不能调用子类独有的方法
多态注意事项
1.多态是方法的多态,属性没有多态
2.父类和子类有联系,才能强转 类型转换异常!(ClassCastException)
3.存在条件:继承关系,方法需要**重写**,父类引用指向子类对象! Father f=new Son();
? 不可以重写:
? 1.static 方法,属于类,不属于实列;
? 2.final 常量;
? 3.private 方法;
### static
静态变量:public static age;
静态方法:public static void run()
静态块:static { }
静态导入包:eg:import static java.lang.Math.random
```java
import static java.lang.Math.random;
```
**注意:**
1.只执行一次
2.创建对象的时候最先执行
3.静态变量所有对象共享,对象名.可以访问
4.类中可以直接访问,类外得用类名.访问
### 抽象类(abstract)
(类:单继承 接口:可以多继承)(抽象的抽象:约束)
1.抽象方法,只有方法名,没有方法的实现
2.继承抽象类的类,必须实现抽象类的所有方法,除非它本身也是抽象类
3.不能new抽象类,只能靠子类去实现 它:(约束)
4.抽象类中可以有普通的方法(可以写方法的实现)
5.抽象方法必须在抽象类中
6.存在构造器(构造方法)
7.抽象类的意义:提高开发效率,提高程序的可扩展性;
### 接口(interface)
(面对对象的精髓)
![](https://img-blog.csdnimg.cn/img_convert/6a372a980f2c871e165f7e12b4c93102.png)
1.接口中的所有定义方法默认都是抽象的 public abstract
2.接口中的所有定义量都是常量默认都是抽象的 public abstract final
2.接口需要有实现类,实现了接口的类,需要重写接口中的所有方法(implements)
作用:
? 1.约束
? 2.定义方法,让不同的人实现
? 3.接口不能被实例化,没有构造器
? 4.implements可以实现多个接口
### 内部类
类中定义类
1.通过外部类来实例化内部类
```java
public class Outer{
public class Inner{
}
}
//通过外部类来实例化内部类
Outer.Inner inner=outer.new Inner();
```
2.可以获取外部类的私有属性
3.静态内部类不可以获取外部类非静态属性
4.一个Java类中可以有多个class类,但是只能有一个public class
5.局部内部类:在方法中定义的类
6.匿名内部类
以上是关于Java面向对象的主要内容,如果未能解决你的问题,请参考以下文章