欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java面向对象思想理解总结

程序员文章站 2022-06-28 17:08:29
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport...




前言

设计规则:一般的设计规则大概内容如下:

  1. 将所有派生类(子类)共有的属性和行为抽到超类中---------------抽共性。
  2. 所有派生类(子类)的行为一样,设计为普通方法,所有派生类的行为都不一样,设计为抽象方法。
  3. 将部分派生类(子类)共有的行为,抽到接口中,接口时对继承的单根性的拓展----------------实现多继承。

面向对象三大特性:封装、继承、多态

一、封装

1.是指一种将抽象性函数式接口的实现细节部分包装,隐藏起来的方法。
2.要访问该类的代码和数据,必须通过严格的接口控制(属性私有化 private,行为公开化 public)
注意:若属性 private 修饰,同包下其他类需要访问,则要 getters 和 setters 方法(有返回值无参与无返回值有参的方法)

二、继承

1.子类继承父类成员方法,如果在子类中出现同名称的成员方法,则为覆盖,即子类成员方法覆盖掉父类成员方法,要在子类访问父类成员方法用 super().
2.父类的构造器调用以及初始化过程一定在子类的前面
3.继承是从已有的类得到继承信息的创建新的类的过程,把父类的行为或者属性继承过来。

三、多态

不同类的对象对同一消息做出响应,即:同一消息可以根据不同对象做或者采用多种不同的行为方式。(发送消息就是函数调用)
1.实现多态的技术:动态绑定,指在执行期间判断所引用的实际类型,根据其实际的类型调用其相应的方法。
2.作用:消除类型之间的耦合关系。
3.多态存在的三个必要条件:继承,重写,父类引用指向子类对象(向上转型)。
4.当使用多态方式调用方法时,检查父类中是否有该方法,如果没有,则编译错误,如果有,再去调用子类的该同名方法。

注意:静态 static 方法属于特殊情况,静态方法只能继承,不能重写 override,如果子类中定义了同名同形式的静态方法,它对父类方法只是起到隐藏的作用。调用看用谁的引用,则调用谁的版本。
如下代码栗子:

public class A { int age1=1; String name1="我是父类"; void show1() { System.out.println("this is 父类"); } static void method1(){ System.out.println("我是父类静态方法"); } } 
public class B extends A { int age2=2; String name2="我是子类"; String newBianliang = "我是新增成员变量"; void show1() { System.out.println("this is 子类,我重写了父类的show()方法"); } void showB_1() { System.out.println("子类新增的方法"); } static void method1(){ System.out.println("我是子类静态方法"); } } 
public class App { public static void main(String[] agrs) { //上转型对象 A a = new B(); //父类引用指向子类 //能操作继承或隐藏的成员变量, System.out.println(a.age1); System.out.println(a.name1); a.show1();//能调用子类继承或重写的方法 a.method1(); //		System.out.println(a.age2); //		System.out.println(a.name2); //		System.out.println(a.newBianliang); //编译错误,不能操作子类新增的成员变量 //a.showB_1();//编译错误,不能调用子类新增方法 /**
		 * 上转型对象特点总结:可以操作继承或隐藏成员变量,
		 * 调用子类继承或重写的方法.
		 * 不能操作子类的新增成员变量,不能调用子类新增的方法
		 */ System.out.println("-----------------"); B b = new B(); System.out.println(b.age2); System.out.println(b.name2); a.method1(); } } 

代码结果:
Java面向对象思想理解总结

5.如果想要调用子类中有的方法,而父类没有的方法,需要进行强制类型转换,因为当父类的引用指向子类的对象(向上造型),用父类引用调用方法时,找不到父类中不存在的方法,这需要强制类型转换(向下转型)。
如下代码栗子:

//多态的演示 public class Duotai { public static void main(String[] args) { Aoo o = new Boo(); //向上造型 Boo o1 = (Boo)o; //o所指向的对象,就是Boo类型 o1.b(); Inter1 o2 = (Inter1)o; //o所指向的对象,实现了Inter1接口 o2.a(); //Coo o3 = (Coo)o; //ClassCastException类型转换异常 Aoo dd = new Coo(); Coo o4 = (Coo)dd; o4.a(); } } interface Inter1{ public void a(); } class Aoo{ } class Boo extends Aoo implements Inter1{ public void a() { System.out.println("实现Inter的方法"); } public void b() { System.out.println("引用所指向的对象,就是该类型"); } } class Coo extends Aoo { public void a() { System.out.println("123"); } } //输出结果显示如下: //所指向的对象,就是该类型 //实现Inter的方法 //123 

输出结果: Java面向对象思想理解总结

四、抽象(特殊)

1.将相同的类的共同特征总结出来,构造成类的过程。
----1.1.包括数据抽象以及行为抽象。数据抽象变成类的成员变量,行为抽象变成类的成员函数。
----1.2.抽象只关心成员变量以及成员函数,并不关心具体的实现细节。

五、抽象类与接口的区别

1.抽象类可以提供成员方法的实现细节(抽象类可以没有抽象方法),而接口中只能存在 public abstract 方法。
2.抽象类的成员变量可以是各种类型,接口中成员变量只有 public static final。
3.抽象类可以有静态方法和静态块,接口中不能有(但 JDK 1.8 可以重写)。
4.一个类只能继承一个抽象类,而一个类可以实现多个接口。


总结

面向对象三大特征:

  • 封装:
    • 类:封装的是对象的属性和行为;
    • 方法:封装一段特定的业务逻辑功能;
    • 访问控制修饰符:封装的是具体的访问权限;
  • 继承:
    • 作用:代码复用;
    • 超类:所有派生类所共有的属性和行为;
      • 接口:部分派生类所共有的行为。
      • 派生类:派生类所特有的属性和行为。
    • 传递性,单一继承、多接口实现;
  • 多态:
    • 意义:
      1.行为的多态:所有抽象方法都是多态的;
      2.对象的多态:所有对象都是多态的;
    • 向上造型、强制类型转换、instanceof判断;
    • 多态的表现形式:
      • 重写:根据对象的不同来表现多态。
      • 重载:根据参数的不同来表现多态。

Java面向对象介绍到这啦。
后续不断写写更多知识,让读者学起来不迷茫!
写作不易请点个赞3Q。若有错误之处,请各位点评下。


所有章节目录在此处:https://blog.csdn.net/qq_41254299/article/details/106638651
转载请注明出处:https://blog.csdn.net/qq_41254299
本文出自【Superclover_的博客】 

相关标签: Java 面向对象