Java面向对象
2021-03-23 07:24
标签: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 **注意:** 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 2.可以获取外部类的私有属性 3.静态内部类不可以获取外部类非静态属性 4.一个Java类中可以有多个class类,但是只能有一个public class 5.局部内部类:在方法中定义的类 6.匿名内部类 Java面向对象 标签:stat 多个 存在 interface 属性 不同 初始化 blog 继承 多态 原文地址:https://www.cnblogs.com/V587h/p/13852022.html
import static java.lang.Math.random;
```
public class Outer{
public class Inner{
}
}
//通过外部类来实例化内部类
Outer.Inner inner=outer.new Inner();
```