java面向对象编程

文章目录

    • 如何创建/li>
    • 常见的系统包
  • 一、包访问控制权限
  • 二、继承
    • 1.通过关键字extends
    • 2.继承的意义/li>
  • 注意
  • 三、protected 关键字
  • 四、组合
  • 五、super关键字
    • 打印顺序
  • 六、多态
    • 1.向上转型
    • 2.向下转型
    • 3.运行时绑定
  • 注意:重写时:
    • 4.多态的好处/li>
  • 七、抽象类
  • 注意:
  • 八、接口
  • 注意:
    • 常见的3个接口
  • 1、Comparable
  • 2、Comparator
  • 3、Cloneable
  • 总结

为了类的唯一性

如何创建/h2>

java面向对象编程
在包中创建类
java面向对象编程
此时只是创建了一些文件夹

常见的系统包

  1. java.lang:系统常用基础类(自动导入)。
  2. java.lang.reflect:java 反射编程包。
  3. java.net:进行网络编程开发包。
  4. java.sql:进行数据库开发的支持包。
  5. java.util:是java提供的工具程序包(集合类等) 。
  6. java.io:I/O编程开发包。

一、包访问控制权限

一个类在同一个包下才可以访问

二、继承

1.通过关键字extends

A extends B
B指基类/父类/超类
A指子类/派生类

A包含B中的所有东西

2.继承的意义/h2>

代码的重复使用

问题1:子类继承父类,都继承了什么br> 答:继承了所有的内容,除了构造方法,包含由private修饰的,但是不能在子类访问。
问题2:什么时候把关系设置为继承br> 答:当B是A的一种时。eg:A is a B

注意

  1. Java是单继承的,即只能extends一个类。若要解决单继承问题,则要引入接口。
  2. 若类不想被继承:加 final 关键字
    eg:

三、protected 关键字

  • 对于类的调用者来说, protected 修饰的字段和方法是不能访问的
  • 对于类的 子类同一个包的其他类 来说, protected 修饰的字段和方法是可以访问的
访问修饰限定符 访问权限
private 同一包中的同一类中访问
default 同一包中访问
protected 同一包中、不同包中的子类(继承)访问
public 同一包中、不同包中访问

private 访问权限最小,public 访问权限最大

四、组合

组合和继承类似,也是一种表达类之间关系的方式
可以达到代码重用的效果

B是A的一部分。eg:A has a B

五、super关键字

super :代表父类对象的引用
子类继承父类,子类构造的时候,需要首先要帮助父类进行构造

问题:怎么帮助构造br> 答:在子类的构造方法内部,调用父类的构造方法

所以,构造方法不是被继承的,而是在子类显示被调用的。

super 不能放在静态 static 当中

打印顺序

静态的代码块(父类、自己)
父类的实例代码块
父类的构造方法
自己的实例代码块
自己的构造方法


自己的静态代码块(父类的静态代码块不再执行)
…………

六、多态

什么是多态br> 发生有两个前提:①发生向上转型②运行时绑定
多态是一种思想,一个父类引用可以引用不同的子类对象,通过这一个父类引用可以调用同一个方法,表示不同的行为方式,在这个过程中,发生了多态

1.向上转型

父类的引用:引用了子类的对象

向上转型发生的时机:

①直接幅值

②方法传参

③方法返回值

2.向下转型

父类对象转成子类对象
一般不用,不安全

instanceof关键字:
A instanceof B表示:A是否是B的实例,即A之前是否引用了B这个对象

3.运行时绑定

编译时,应该为父类的方法,运行时,绑定了父类的同一个方法

前提条件:
①向上转型
②通过父类的引用调用父类和子类同名的覆盖方法

发生重写:
(在继承关系上)

  1. 方法名相同
  2. 参数列表相同
  3. 返回值相同

注意:重写时:

  • 子类的访问权限一定要大于等于父类的访问权限
  • 要重写的方法一定不是 static 方法
  • 要重写的方法一定不是被 final 修饰

4.多态的好处/h2>
  1. 类的调用者对类的成本降低
  2. 能够降低代码的“圈复杂度”,避免使用大量的if-else
  3. 可扩展能力更强

七、抽象类

包含抽象方法的类
abstract关键字

注意:

  • 抽象类不能实例化
  • 在抽象类当中,可以有和普通类一样的数据成员和方法
  • 抽象类可以被继承,可以发生向上转型
  • 当一个普通类继承了一个抽象类,那么当前的普通类一定要重写抽象类当中的抽象方法
  • 当普通类A继承了抽象类,且不想实现抽象类的抽象方法,那么这个普通类可以被修改为抽象类A,此时就不需要进行实现
  • 当普通类B继承了抽象类A,此时就要实现这个抽象方法了
  • 抽象方法不能被private修饰,因为抽象方法就是用来被重写的
  • 抽象类出现的最大意义是为了被继承

八、接口

使用关键字interface修饰

注意:

  • 接口当中的方法(默认为),不能有具体实现
  • 接口当中的成员变量(默认为),必须在定义同时初始化
  • JDK1.8引入新特性,default修饰的方法,可以有具体的实现
  • 接口不可以进行实例化
  • 类和接口的关系 implements
  • 一个类可以实现多个接口
  • 一个类可以继承一个类的同时实现多个接口
  • 接口可以扩展多个接口
    举例:

java面向对象编程

有了接口之后, 类的使用者就不必关注具体类,而只关注某个类是否具备某种能力。

常见的3个接口

1、Comparable

对于Comparable接口来说,一般是用在类的内部的

class Student implements ComparableStudent>{    private String name;    private int score;    public Student(String name, int score) {this.name = name;this.score = score;    }    @Override    public String toString() {return "Student{" + "name='" + name + ''' + ", score=" + score + '}';    }    @Override    public int compareTo(Student o) {if(this.score>o.score){    return 1;}else if(this.score==o.score){    return 0;}else{return -1;}    }}public class TestDemo2 {    public static void main(String[来源:橘白呀啊
                                                        

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月16日
下一篇 2021年1月16日

相关推荐