首页 > 其他分享 >面向对象的三大特征

面向对象的三大特征

时间:2023-02-16 02:22:07浏览次数:33  
标签:重写 调用 super 特征 子类 面向对象 父类 方法 三大

封装

程序设计中追求“高内聚,低耦合”,主要细节由自己操作,不让外部操作;只留少量方法给外部操作;

属性私有,get/set:

用private关键字设置属性为私有属性,用get来获得这个数据,get里面需要返回值;使用set来给这个数据设置值,set需要设置形参;

 

 

继承

Object类:在java中,所有的类,都默认直接或者间接继承Object类;

继承是类跟类之间的一种关系;

在继承中,类分为子类(派生类)和父类(基类),子类继承父类,使用extends关键字来表示;

extends:是扩展的意思,所以子类是父类的扩展; 写法:public class Student(子类) extends Person(父类) {};

子类继承了父类,就会拥有父类的全部方法和属性;

父类私有的东西(使用private关键字)无法被继承!!!

继承与封装一起使用,让父类只开放几个方法给子类继承,如get/set,其他封装起来,不让外部操作,使属性私有;

 

super

super是用来调用父类的构造器,方法和属性的;

写法:super.name;(调用属性) super.print();(调用方法) super();(调用构造器,有无参数,区分有参无参,如果父类没有无参构造器,子类就无法调用);

子类构造器中,自动调用父类的无参构造,属于隐藏代码;

super 只能出现在子类的方法或者构造器中,调用父类的构造器,一定要在代码第一行;

super和this无法同时调用构造方法,因为使用super和this调用构造方法,都需要在代码的第一行,会冲突;

 

super VS this

代表的对象不同:

this:本身调用者这个对象 ​ super:代表父类对象的应用

前提

this:没有继承也可以使用 ​ super:只能在继承条件才可以使用 ​ 构造方法

this():本类的构造 ​ super():父类的构造

 

重写

静态的方法和非静态的方法 静态方法 : 方法的调用只和左边,定义的数据类型有关;静态的⽅法可以被继承,但是不能重写。如果⽗类中有⼀个静态的⽅法,⼦类也有⼀个完全一样的方法,那么该⼦类的⽅法会把⽗类的⽅法隐藏,⽽不是重写,⽗类的静态⽅法和⼦类的静态⽅法是两个没有关系的⽅法

非静态方法:重写,将父类继承下来的方法,进行修改方法体,其余一直,修改后不影响父类自己的方法

重写:需要有继承关系,子类重写父类的方法!(重写只针对方法,与属性无关)

  1.方法名必须相同

  2.参数列表必须相同

  3.修饰符:范围可以扩大(不能缩小):public>protected>default>private

  4.抛出的异常:范围可以被缩小,但是不能扩大:ClassNotFoundException --> Exception(大)

重写,子类的方法和父类必须一致,方法体不同!

  为什么需要重写:

    1.父类的功能,子类不一定需要,或者不一定满足!

     Alt + Insert : override 重写;

 

 

多态

多态就是一个实体的多种形态,当不同的对象去完成就是不一样的结果

实际类型和引用类型

一个对象的实际类型是确定的,但是可以指向的引用类型是不确定的;

  1.如果引用类型是自己的实际类型,那么能调用的方法都是自己的或者继承父类的! 如:Student s1 = new Student();

  2.如果引用类型是实际类型的父类,则可以指向子类,但是不能调用子类独有的方法,只能调用父类继承给子类的方法 如:Person s2 = new Student();

多态的注意事项

多态注意事项:

1.多态是方法的多态,属性没有多态

2.父类和子类,有联系 类型转换异常!ClassCastException!

3.存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new Son();

 

  无法重写的方法:

    1.static 方法:属于类,它不属于实例

    2.final 常量

    3.private 方法

类型的转换

使用instanceof关键字,可以判断类之间是否存在父子关系

1.父类引用指向子类的对象;

2.把子类转换为父类,向上转型,自动转换,可能丢失自己本来的一些方法; 如:Person obj = new Student();

3.把父类转换为子类,向下转型,强制转换; 如:Student student = (Student) obj; student.go(); 或者((Student) obj).go();

4.方便方法的调用,减少重复的代码!简洁;

idea快捷键

ctrl + alt + v:补全代码

alt + insert:添加构造器,get/set等方法

ctrl + h:查看父子类的树

 

标签:重写,调用,super,特征,子类,面向对象,父类,方法,三大
From: https://www.cnblogs.com/chj020415/p/17125299.html

相关文章

  • JS笔记(四):面向对象、异常处理
    镇楼图Pixiv:torino六、JS中的面向对象类(class)博主视为你已拥有相关基础,这里不再赘述相关概念类的语法如下,class在本质上是function,可以说class只是针对构造器的......
  • java-studyDay03-面向对象
    生成Java帮助文档:命令格式:javadoc–d文件夹名–auther–version*.java//格式/***类描述*@author作者名*@versio......
  • 面向对象的方法
    ​ 面向对象编程模式如图所示,在这种模式中,函数和它需要存取的数据封装在称为对象的包中。对象之间的数据访问是间接的,是通过接口进行的。我们可以将对象看做是鸡蛋,蛋黄是数......
  • 面向对象详解之三
    面向对象.1封装面向对象三大特征:封装、继承、多态.1.1为什么需要封装?我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动......
  • 面向对象详解之二
    面向对象.1封装面向对象三大特征:封装、继承、多态.1.1为什么需要封装?我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动......
  • 面向对象详解之一
    面向对象面向对象思想概述.1概述Java语言是一种面向对象的程序设计语言,而面向对象思想(OOP)是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计、开发计算......
  • 操作系统的四大特征
    1.并发并发:操作系统同时执行多个进程(依赖CPU个数);串行:同一时间只会执行一个程序;2.共享资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用;2种共享方......
  • 【学习笔记】数列特征方程与特征根
    觉得有意思就稍微微写写,内容大多摘自某本书.1.不动点求数列通项对于函数\(f(x)\),若存在实数\(x_0\)使得\(f(x_0)=x_0\),则称\(x_0\)是函数\(f(x)\)的一......
  • task02:图的基本表示和特征工程
    2.1传统图机器学习(人工特征工程+机器学习)把向量输入机器学习模型中特征一个节点自有的特征属于属性特征连接特征:节点与其他节点的连接关系数据+特征,机器学习......
  • Java面向对象2(G~J)
    G   织女的红线(SDUT2240)importjava.util.Scanner;importjava.text.DecimalFormat;classSum{doublex1,y1,x2,y2;Sum(doublen1,doublem1,doublen2,dou......