码迷,mamicode.com
首页 > 编程语言 > 详细

Java面向对象

时间:2020-10-21 21:07:29      阅读:21      评论:0      收藏:0      [点我收藏+]

标签:stat   多个   存在   interface   属性   不同   初始化   blog   继承 多态   

# 面向对象

### 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面向对象

标签:stat   多个   存在   interface   属性   不同   初始化   blog   继承 多态   

原文地址:https://www.cnblogs.com/V587h/p/13852022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!