1.this和super 的区别(面试题)

this:代表的当前类对象的地址值引用

super:代表的父类对象的地址值引用(代表父类的空间标识)

访问成员变量
  this.变量名; 访问的本类中的成员变量 ;     super.变量名; 访问的是父类的成员变量

访问构造方法:
  this() ; 访问本类的无参构造方法;              super() ;访问的父类的无参构造方法
  this(xxx);访问的本类的有参构造方法;       super(xxx);访问的父类的有参构造方法
 成员方法:
   this.方法名();访问的是本类的成员方法;    super.方法名() ;访问的是父类的成员方法

2.方法重写和方法重载的区别?(面试题)
 
方法重载:   在一个类中,提供n多个功能,这些功能,方法名相同,参数列表不同,与返回值无关(目的:提高某个功能的扩展

参数列表不同: 1)类型不同
                         2)个数不同
                         3)考虑参数类型的顺序

public static void open(int a,double d){}
 public static void open(double a,int b){}
 构造方法也可以重载!
 方法重写:在继承关系中,子类出现了父类一模一样的方法声明,重写的目的:子类有自己的功能,需要   将父类的该功能覆盖掉!

3.多态例题:

南方人和北方人都有姓名,年龄以及性别,都有"吃饭"的功能,但是南方人经常吃米饭,北方人经常吃面条,南方人主要还去经商,北方人主要考学,请使用面向对象编程并且使用多态形式进行测试南方人和北方人

Person.java

public class Person {private String name ;private int age ;private String position; //职位private String gender ;//性别public Person() {}public Person(String name, int age, String position, String gender) {this.name = name;this.age = age;this.position = position;this.gender = gender;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPosition() {return position;}public void setPosition(String position) {this.position = position;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}//其他成员方法public void eat(){System.out.println("人都需要吃饭...");}}

SourthPerson.java

//南方人
public class SourthPerson extends Person{public SourthPerson() {}public SourthPerson(String name, int age, String position, String gender) {super(name, age, position, gender);}//重写父类功能@Overridepublic void eat() {System.out.println("南方人喜欢吃大米");}//特有功能public String business(){return "喜欢经商" ;}
}

NorthPerson.java

//北方人
public class NorthPerson extends Person {public NorthPerson() {}public NorthPerson(String name, int age, String position, String gender) {super(name, age, position, gender);}@Overridepublic void eat() {System.out.println("北方人喜欢吃面食");}//特有功能:学习public String study(){return "喜欢学习钻研...";}
}

PersonTest.java(测试类)

public class PersonTest {public static void main(String[] args) {//测试南方人//直接构造方法赋值SourthPerson sp = new SourthPerson("南方人",42,"个体户","女") ;System.out.println(sp.getName()+"---"+sp.getAge()+"---"+sp.getPosition()+"---"+sp.getGender());String str = sp.business();System.out.println(str);sp.eat();//无参构造+setXXX()/getXXX()//北方人自己测试}
}

4.final(状态修饰符):最终的,无法更改的
  关于final关键字的特点:
  (1)可以修饰类,该类不能被继承
  (2)可以修饰符成员方法,成员方法不能重写
  (3)可以修饰的变量,这个变量此时是一个常量

5.final ,finally,finalize()的区别?(面试题)

a、final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个 常量不能被重新赋值。
b、finally关键字一般在异常中使用,配合try catch 一起使用,表示不管是否发生异常,finally中的内容一定会被执行
c、finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调 用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。

6. final修饰基本数据类型和引用类型的区别?

final修饰基本数据类型: 基本数据类型的对应的数据值不能在被赋值了,只能赋值一次

final修饰引用类型:引用数据类型对应的地址值不能被改变

7.多态

(1)什么是多态?

一个事物在不同时刻不同形态

(2)多态的前提条件:

a.必须存在继承关系 (extends)

b.必须存在方法重写 :子类需要覆盖父类的功能

  Animaleat():"动物都需要吃饭..."Cateat() "猫吃鱼"Dogeat() "狗吃骨头"

c.必须有父类引用指向子类对象

class Fu{}
class Zi extends Fu{
//存在重写}格式: Fu fu = new Zi() ;

 (3)多态的成员访问特点:

Fu fu  = new Zi() ;
a.针对成员变量的访问问题:
   编译看左,运行看左(使用父亲的东西)
b.针对多态中的成员方法的访问问题:  我们所说的成员变量/成员方法----非static
   编译看左,运行看右(因为子类重写了父类的东西)
c.如果成员方法是静态方法:(静态成员方法 算不上方法重写,直接可以类名来访问,跟类相关的方法)
   编译看左,运行看左
d.构造方法:存在继承关系: 还需要让父类先初始化,然后再子类进行数据初始化(分层初始化)

(4)多态的弊端:不能访问子类的特有功能 

解决的方法: (推荐使用:"向下转型")
多态的第三个前提条件:父类 引用指向子类对象:"向上转型 "Fu f = new Zi() ;
能不能将父类的引用转换成子类的引用?

好处:不需要在堆内存开辟空间
可以------>"向下转型"
Zi z =   (Zi)f ;  还原成子类型

强转类型转换: 目标类型 变量名 =(目标类型)初始化值;

(5)多态的好处

a.提高代码的复用性.(由继承保证)

b.提高代码的扩展性.(由多态保证)

19.继承和多态的知识点以及“多态测试南北方人案例“和“final“关键字相关推荐

  1. java的知识点13——多态、对象的转型(casting)、final关键字、抽象方法和抽象类、接口的作用、如何定义和使用接口?、接口的多继承、面向接口编程

    多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1. 多态是方法的多态,不是属性的多态(多态与属性无关). 2. 多态的存在 ...

  2. Java面试知识点:多态、内部类

    问题:Java面试知识点:多态.内部类 答案:  多态中成员访问特点 • 构造方法:同继承一样,子类会通过super访问父类构造方法 • 成员变量:编译看左边(父类),执行看左边(父类) • 成员方 ...

  3. 【Java挠头】继承、抽象、接口、多态、向上转型、向下转型等精妙干货

    –本文摘要–     1.本文的目标读者:是了解Java基础,且对面向对象概念有所了解,但是对Java中继承.抽象类.接口.多态等等概念搞不清的初学者.     2.本文的内容摘要:讲述Java中的一 ...

  4. JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

    第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...

  5. -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口

    java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型  也就是 ...

  6. Java学习 day11 (继承与多态)接口、多态

    前言: 前天我们学习了继承,子类可以在父类的基础上重写父类内容,这样很容易误伤很多固定用法,已经写好的类,为了避免这种情况,java提供了final关键字,用来修饰不可改变内容. 我的理解是,类似于我 ...

  7. Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份。方法:getSalary(int month) 根据

    Cola公司的雇员分为以下若干类:(知识点:多态) 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工 的生日月份.方法:getSalary(int month) 根据参 ...

  8. Java炒鸡重要知识点:多态!!!

    多态的概述: 多态:同一操作(方法)作用于不同对象,可以产生不同的执行结果. 多态的前提和体现 !有继承关系 !有方法的重写 !父类的引用指向子类的对象,简单来记就是"父父new子" ...

  9. Eclipse,静态,继承,封装,this,super,重写,重载,多态,final,冒泡排序,选择排序,抽象类,接口,内部类

    文章目录 Eclipse工具中java项目的工程结构 静态代码块的书写格式 静态代码块,构造代码块,构造方法的优先级 static关键字的特点 封装的概念 private关键字的特点 面向对象思想特点 ...

  10. python基础:动态方法、私有属性、property、继承、重写、super、多态、符号重载、拷贝、组合、工厂模式,单例

    1.动态方法_代码示例 class Person:def work(self):print("努力上班!")def play_game(self):print("{0}玩 ...

最新文章

  1. 【c语言】蓝桥杯算法训练 整除问题
  2. 火遍AI圈的万字长文,Lecun却说“标题太好笑,作者发推宣战:欢迎来辩!
  3. 使用CUDA计算Haar小波变换
  4. 在iOS 中使用sleep方法 让程序暂停几秒钟
  5. 中计算散度的函数_荷畔微风 - 在函数计算FunctionCompute中使用WebAssembly
  6. Linq入门演练---(1)基本用法-分组,排序,内连接
  7. Spring MVC访问不到静态资源
  8. Lazarus 1.6 增加了新的窗体编辑器——Sparta_DockedFormEditor.ipk
  9. Mac OS X 更新JAMF域控配置
  10. java突击面试章程
  11. R语言:关于我国各地区消费水平的聚类分析
  12. 廊坊金彩教育:店铺主图如何优化
  13. mysql1526_MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx
  14. springboot入门(四):ajax实现登录
  15. 强大的接口测试与压力测试工具——postmanjmeter
  16. STM32的USART串口通信
  17. python如何将txt文本导入excel实例
  18. ECSHOP 银联在线支付 PHP 银联商务
  19. python从excel中读取数据并填写网页表格
  20. Armadillo与OpenCV矩阵数据mat、vec与Mat的相互转换

热门文章

  1. 维权--火车的行车安全
  2. 前端小白菜学习之路 day1
  3. aix安装卸载java_AIX 上卸载 DB2
  4. 当当这个价不忍直视,赶紧秒收了!!
  5. 学习笔记(30):MATLAB基础入门课程-乘法
  6. allegro 17.2 导出3D文件
  7. OPPO r7t线刷包下载_OPPO r7t密码忘记问题 中毒 死机等问题 完美解决!
  8. Element UI - el-table 表格 hover 修改背景色
  9. 软考高级系统架构 上午真题错题总结(全)
  10. MySQL高级(进阶)语句