Java面向对象

原创
10/18 22:55
阅读数 0

面向对象

oop

本质:以类的方式组织代码,以对象的形式组织(封装)数据;

抽象

三大特性:封装 继承 多态

封装:

将具体的对象封装成抽象的类

认识角度:先有对象后有类,对象是具体的,类是抽象的

代码运行:先有类后有对象

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;

多态

一个对象的实际类性是确定的,但可以指向的引用类型就不确定了:父类的引用指向子类

对象执行那些方法主要看左边的类型,和右边关系不大!

子类重写了父类的方法,执行子类的方法。

对象能调用的方法都是自己的或者继承父类的!

父类型可以指向子类,但是不能调用子类独有的方法

多态注意事项

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

import static java.lang.Math.random;

注意:

1.只执行一次

2.创建对象的时候最先执行

3.静态变量所有对象共享,对象名.可以访问

4.类中可以直接访问,类外得用类名.访问

抽象类(abstract)

(类:单继承 接口:可以多继承)(抽象的抽象:约束)

1.抽象方法,只有方法名,没有方法的实现

2.继承抽象类的类,必须实现抽象类的所有方法,除非它本身也是抽象类

3.不能new抽象类,只能靠子类去实现 它:(约束)

4.抽象类中可以有普通的方法(可以写方法的实现)

5.抽象方法必须在抽象类中

6.存在构造器(构造方法)

7.抽象类的意义:提高开发效率,提高程序的可扩展性;

接口(interface)

(面对对象的精髓)

1.接口中的所有定义方法默认都是抽象的 public abstract

2.接口中的所有定义量都是常量默认都是抽象的 public abstract final

2.接口需要有实现类,实现了接口的类,需要重写接口中的所有方法(implements)

作用:

​ 1.约束

​ 2.定义方法,让不同的人实现

​ 3.接口不能被实例化,没有构造器

​ 4.implements可以实现多个接口

内部类

类中定义类

1.通过外部类来实例化内部类

public class Outer{
    public class Inner{
    }
}
//通过外部类来实例化内部类
Outer.Inner inner=outer.new Inner();

2.可以获取外部类的私有属性

3.静态内部类不可以获取外部类非静态属性

4.一个Java类中可以有多个class类,但是只能有一个public class

5.局部内部类:在方法中定义的类

6.匿名内部类

展开阅读全文
打赏
0
0 收藏
分享

作者的其它热门文章

加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部