目录

1.继承

1.1:父类成员访问

2.this应用和super关键字

2.1:this引用

2.2:super关键字

2.3:this和super的区别

2.4:final关键字

3.多态

3.1:多态实现条件

3.2:重写和重载

3.2.1:重载

3.2.2:重写

3.2.3:重写和重载的区别

3.3.向上转移

3.4.向下转型

3.5:多态的优缺点


1.继承

继承中的关键字是extends.

注意事项:

1.子类会将父类中的成员变量或者成员方法继承到子类中。

2.子类继承父类之后,必须要添加自己特有的成员,体现与父类的不同。

3.私有成员可以继承但不能访问。

4.java中只能继承一个类。


1.1:父类成员访问

子类与父类中的成员 注意:

1.如果访问成员变量子类中有,优先访问自己的成员变量。

2.如果访问的成员变量与父类中成员变量同名,则优先访问自己的。

成员变量访问遵循就近原则,自己有优先自己的,如果木有则向父类中找。


2.this应用和super关键字

2.1:this引用

1.this.普通成员变量

2.this.普通成员方法

3.this():调用结构体方法

注意:this引用的是调用成员方法的对象,不能调用静态的成员变量和方法。

注意:

1.this只能在成员方法中使用。

2.this只能引用当前对象,不能再引用其他对象。


构造方法:

1.名字必须与类名相同。

2.没有返回值类型,设置为void也不行。

3.当我们没有提供构造方法的时候,编译器会帮我们提供一个不带参数的方法。

4.实例化才会调用构造方法。


2.2:super关键字

1.super.data:访问父类的普通成员变量。

2.super.fun():调用父类的普通成员方法。

3.this():调用父类的构造方法。

注意:只能再非静态方法中使用

必须是构造方法中的第一语句,不能和this同用。


2.3:this和super的区别

1.this是当前对象的引用,当前对象是调用实例方法的对象。super是子类对象中从父类继承下来部分成员的引用。

2.在非静态成员方法中,this用来访问本类的方法和属性,super用来访问父类继承下来的方法和属性。

3.在构造方法中,this()用来调用本类构造方法,super()调用父类的构造方法。


2.4:final关键字

final关键字可以用来修饰变量,成员方法以及类。

public static void main(String[] args) {final int a=10;a=20;//这里报错了,//final修饰变量或字段,表示常量,只能初始化一次,且初始化后不能被修改
}

final修饰类:表示此类不能被继承-----密封类


3.多态

多态的意义:去完成莫个行为,当不同的对象去完成会产生不同的状态

3.1:多态实现条件

1.必须在继承的调价下

2.子类必须对父类中的方法进行重写。

3.通过父类的引用调用重写的方法。


多态中实现条件有重写,那我们来讲一讲重写和重载。

3.2:重写和重载

3.2.1:重载

class A {public int c;public int d;public int fun(int a, int b) {//1return a + b;}public double fun(double a, double c) {//2return a * c;}
}class B {public int a;public int b;public int fun(int a, int b, int c) {//3return a + b + c;}
}public class Test1 {public static void main(String[] args) {A a = new A();int c1 = a.fun(2, 3);System.out.println(c1+" ");int c2 = a.fun(2, 3);System.out.println(c2+" ");B b = new B();int c3 = b.fun(2, 3, 4);System.out.println(c3);}

在这里1,2,3构成了重载。

注意:

1.方法名必须相同。

2.参数列表必须不同(参数的个数不同,参数的类型不同,类型的次序必须不同)。

3.与返回值类型是否相同无关。


3.2.2:重写

重写:是子类对父类非静态,非private修饰,非构造方法等的实现,进行重写。

 方法重写的规则:

1.方法名相同。

2.参数列表相同。

3.返回值相同。(被重写的方法类型可以不同,但是必须是父子关系。)

4.访问权限不能比父类中被重写的方法的访问权限低。


重写和重载的区别,有时候会在面试中遇到。所以我们需要注意这些

3.2.3:重写和重载的区别

区别点                 重写             重载
参数列表 不可修改 必须修改
返回类型 不可修改(除了父子类关系) 可以修改
访问限定符 一定不能做更严格的限制 可以修改

3.3.向上转移

向上转移:实际就是创建一个子类对象,将其当成父类对象来使用。

class animal{String name;int age;public animal(String name, int age) {this.name = name;this.age = age;}public void eat(){System.out.println(name+"正在吃东西");}}class Dog extends animal{public Dog(String name, int age) {super(name, age);}public void eat(){System.out.println(name+"吃狗粮");}public  void bark(){System.out.println(name+"汪汪叫");}}
public class Test2  {public static void main(String[] args) {animal animal1=new Dog("hihi",10);animal1.eat();//这里就是//animal1.bark()//这里报错}}

这就是向上转型,只能调用父类的成员属性和方法。

 多态的用例:

这里就是多态,dog 和cat都调用eatFood函数,但出现的结果是不一样的。


3.4.向下转型

向下转型:将父类再还原为子类对象即可,即为向下转型。

这里会出现类型转换异常。

instanceof:如果该表达式为true,则可以安全转换。


3.5:多态的优缺点

好处:

1.可以降低代码的圈复杂度(条件语句和循环语句出现的个数)

2.可扩展能力更强。

坏处:

1.代码运行效率低。

2.属性和构造方法没有多态性。

总结:如果有啥不对或者没有说明清楚的,希望大家可以多多指教。

JAVA语法三:继承和多态相关推荐

  1. Java中的继承 与 多态(中)

    先导: 我们在<Java中的继承 与 多态(上)>当中讲解了如下几个问题,  1.继承是什么   2.super关键字   3.特殊考点-父子类中不同代码块的实现顺序 所以现在我们对于继承 ...

  2. Java实验3继承、多态

    继承.多态(接口和包) 实验目的 (1) 掌握Java语言中继承和多态的相关概念 (2) 掌握Java程序设计中继承和多态机制的使用 (3) 掌握Java语言中接口和包的概念及使用 实验内容及要求 仿 ...

  3. Java回顾 封装 继承和多态

    封装 什么是封装 封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装时的权限控制符区别如下: 封装的意义 对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象 ...

  4. Java基础:继承、多态、抽象、接口

    第一讲    继承 一.继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 2.通过extends关键字可以实现类与类的 ...

  5. Java基础篇--继承(inherit),多态(Polymorphism)

    Java基础篇--继承(inherit),多态(Polymorphism) 1. 继承概述 1.1 什么是继承 1.2 为什么要使用继承 1.3 继承的特点 1.4 继承的优点 2. 组合设计模式 2 ...

  6. 【java笔记】继承与多态

    多态性的前提:extends继承或者implements实现 继承与多态: 定义:同一个操作被不同类型对象调用时可能产生不同 的行为 解释:如果一个类有很多子类,并且这些子类都重写了父类中的某个方法, ...

  7. Java实战之继承与多态

    类的继承以及抽象类的定义和使用 任务描述 我们都知道,生活中的继承无处不在,在数学王国的领域也是如此.最近数学王国中一位名叫Shape的父亲有一个烦心事,他有两个儿子Circle和Rectangle, ...

  8. java封装继承多态的理解_深入理解Java封装、继承、多态

    一:封装 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,常见的实现方式就是:getter.setter. 封装遵循了"开闭原则&qu ...

  9. 初始Java Java SE 包,继承,组合,多态,抽象类,接口

    目录 包 1.静态导入 2.将类放到包中 3.包的访问权限控制 继承 基本语法: 注意事项: protected 关键字 final 关键字 组合 多态 向上转型: 动态绑定 方法重写 重写的规则 : ...

最新文章

  1. 关于微信的jsapi_ticket的获取方法;
  2. pycharm中的requirements.txt文件—如何生成及导入
  3. mysql修改数据库字符集,编码
  4. 闲得蛋疼在linux下装鸟个svn
  5. 小车自动往返工作原理_自动门厂家为你讲解各类自动门工作原理
  6. mac中的放置java类库扩展的位置
  7. html调用app store,iOS 获取appStore的链接地址,从app中跳转 appStore中应用
  8. Spring框架----AOP的概念及术语
  9. Effective Java(二)—— 循环与 StringBuilder
  10. python调用c语言函数_从Python调用C函数
  11. G-Sensor 校准标准
  12. SpringMVC系列(四)使用 POJO 对象绑定请求参数值
  13. 读《林锐-我的大学十年》
  14. Execl单元格图片锁定----一定能
  15. 很好的东子(干货很多)--把一个函数变成全局的方法及slideToggle()
  16. 服务搭建篇(一) 搭建基于prometheus + node_exporter + grafana + Alertmanager 的监控报警系统 , 保姆级教程
  17. 算法导论——钢条切割问题(C语言)
  18. MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据
  19. 数据库编程入门培训(一)
  20. 狂人日记day12 day13

热门文章

  1. PythonNET网络编程2
  2. matlab里exist是什么意思,通达信exist函数用法,exist()函数在matlab中怎么用?求教大神~...
  3. 一个漂亮的k8s资源可视化工具--kubeview
  4. 微信7.0升级后 高德地图在微信内置浏览器定位失败
  5. 《开源硬件创客——15个酷应用玩转树莓派》——1.2 树莓派基本介绍
  6. Css3飞机动画特效
  7. 电子相册制作软件哪个好?快速制作婚礼请柬、旅游相册等,超简单
  8. 计算机专业第二课堂活动计划,第二课堂活动计划
  9. LeetCode !! 69 plusOne
  10. windows C++多线程(七):信号量Semaphore的使用