一、Java中方法的参数传递(重点)

Java中参数传递都是值传递

Java中的值分两种:
1、如果传递的参数是基本数据类型: 传递的值就是基本数据类型的值。
传递的时候,其实是把基本数据类型的值,复制一份,传递到方法内部
2、如果传递的参数是引用数据类型: 传递的值是对象的地址值。
把地址值复制一份传递给方法的参数。

二、面向对象特征2:继承

面向对象三大特征:1、封装 2、继承 3、多态

继承的语法: extends 被继承的类

继承的特点:
1、在继承的时候,被继承的类我们称之为父类或超类(superclass)、
基类(base class)
2、继承别人的类,称之为子类。
3、继承的时候,子类可以继承父类的所有的非私有成员! 私有成员无法继承。
4、一个子类只能继承一个父类,不能同时继承多个父类。Java中的继承是单继承。
(亲爹只有一个!!!)
5、一旦继承后,那么父类的非私有的成员,就成为了子类的成员。
6、子类继承父类之后,也可以继续添加自己的属性和方法。
子类一般比父类具有更多的功能。
7、一个父类可以有多个子类。
8、java不支持多继承。 支持多重继承。b继承a, c可以继承b
9、子类不能继承父类的构造方法!

super关键字

1、super关键用在子类中,可以访问父类的指定的属性或方法。 相对this,this只能访问当前类的属性和方法。

注意:使用super的访问父类的属性和方法的时候,直接去父类中寻找,而不会在
子类中寻找。使用this访问当前对象的属性和方法的时候,是先在当前类中
寻找,如果当前找不到,再去父类中循环。

把super理解成一个父类的隐式的引用

2、在创建子类对象的时候,子类的构造方法如果没有显示的使用this(...)来调用 本类的其他构造方法。那么这个构造方法,一定会默认调用父类的无参构造方法。 可以使用super(实参)来显示的调用父类的指定的构造方法

注意:1、子类的构造方法既没有this(...),也没有super(...).则相当于
这个构造方法的首行是super();
2、使用super(...)调用父类的构造方法的时候,必须放在构造方法的首行。
3、在同一个构造方法内部,不能同时使用this()和super()只能使用一个。 类中放的成员:
属性、方法、构造方法、构造代码块、静态代码块、静态方法。 创建子类对象。
父类静态代码块-->子类静态代码块-->父类的构造代码块-->父类构造方法-->子类构造代码块-->子类的构造方法 静态优先 --> 父类优先 --->构造代码块优先--->构造方法
关键字 属性 方法 构造方法 作为参数
this 当前属性 当前对象的方法 当前类的构造方法this() 作为参数传递
super 父类属性 父类的方法 访问父类的构造方法super() 不能作为参数

三、访问权限

修饰符 同一类 同一包 子类中(不同包) 任意地方
private yes      
default(默认) yes yes    
protected yes yes yes  
public yes yes yes yes
注意:
1、default有的时候,称之为包访问权限。只有同一个包中才可以访问。
2、这四个权限都是用在类的成员中的。只能用到属性和方法。
3、局部变量不允许添加权限修饰符。
4、defalut默认访问权限,不建议使用。任何时候都要选择相应的访问修饰符,
不建议使用默认的。
5、在子类中使用protected的属性或方法的时候,只能通过super或this来访问。
不能通过父类的对象来访问。 6、这四个访问权限,只能有两个可以用到外部类中。public、default。如果
一个类是使用的public的权限,那么类名必须和文件名保证一致。

四、方法的覆写

当父类的方法的功能无法满足子类的需求,这个时候子类可以根据自己的业务 业务需求,在重新定义继承的那个方法。 方法的覆写(重写、override)

覆写的规则:
两同、两小、一大 两同:
方法名相同、参数列表相同
两小:
1、子类的返回值类型必须是父类的返回值类型的子类或者与父类相同。
返回类型必须有子父类的关系。
2、子类抛出的异常,与父类相同,或者是父类异常类型的子类。
一大:
子类的方法的访问权限,不能比父类小。

五、继承中静态方法的特点

子类可以继承父类的静态方法,但是不能覆写父类的静态方法。


六、final关键字

final可以修饰类、变量、方法

1、final修饰类:表示这个类,不能有子类。不能被继承。太监类

2、final修饰方法:表示这个方法不能被子类覆写,可以被子类去继承。

3、final修饰变量:表示这个变量就成为常量!!!意思是说这个常量, 只能被赋值一次!!!

注意:
1、final修饰成员变量的时候,必须手动赋值,不能让虚拟机赋默认值。
2、形参也可以定义为final,但是这个时候不能再去手动赋值。他的值在调用方法的时候已经赋过值了。
3、final修饰变量之后,变成常量,命名的时候,所有字母大写,不同的单词之间用下划线_连接。

七、抽象类

用abstract修饰的类,就叫抽象类。

抽象方法:只有方法声明,没有方法体,用abstract修饰的的方法。

抽象类的特点:
1、抽象必须用abstract修饰。
2、抽象类中可以有普通有的所有成员,另外他可以有抽象方法。
3、抽象类不能直接创建对象!!!只能通过他的非抽象子类来创建对象。
4、抽象类的子类,必须实行抽象类的所有抽象方法。如果不能完全实行父类的抽象方法,则必须把这个子类也标记为抽象类。
5、抽象类可以没有抽象方法!但是,抽象方法必须放在抽象类中。
6、抽象类和抽象方法能不能用final修饰? 不能
7、抽象方法能不能是private的? 不能
8、抽象方法能不能是protected? 能
9、抽象方法能不能是static的? 不能

八、一战多态

Pet pet = new Dog();
两边类型不一致的情况,我们就称之为多态!
Pet pet:称之为编译时类型
编译能否通过,看编译时类型。
书写代码的时候,能不能编译通过,看编译时类型有没有相应的方法。 new Dog():称之为运行时类型
运行的时候的具体结果,看运行时类型!

8.1 类型的转换

自动类型转换    自动类型提升、向上转换
把子类类型的对象,赋值给父类的引用!
Pet pet = new Dog(); //自动类型转换 强制类型转换
把父类类型的对象,赋值给子类类型的时候,需要强制类型转换!
能够强制类型转换,必须保证对象的实际类型,是要转换去的类型。 instanceof 用这个去判断某个引用是不是属于某个类型
用法:对象引用 instanceof 类

Java--继承和super关键字的更多相关文章

  1. Java继承:super关键字、构造器、final用法

    一.继承 继承好处 1.提高代码的重用性 2.提高代码的扩展性和维护性 3.为多态打下了基础 继承类型 继承子类创建对象的过程 二.super关键字的使用 理解:super代表父类的引用,用于访问父类 ...

  2. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  3. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  4. java的继承 和super关键字 构造器

    面向对象的特性二继承: 继承的好处: 1.减少代码的冗余.提高了代码的复用性 2.便于功能的扩展 3.为之后多态的使用,提供了前提 继承的格式: class A extends B{} A:子类.派生 ...

  5. Java: 类继承中 super关键字

    super 关键字的作用有两个: 1)在子类中调用超类的构造器,完成实例域参数的初始化,调用构造器的语句只能作为另一个构造器(通常指的是子类构造器)的第一条语句出现, 2)在子类中调用超类的方法,如: ...

  6. Java 继承extends、关键字super和this、多态、动态绑定

    Manager 经理  extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...

  7. Java面向对象----继承概念,super关键字

    继承概念: 继承需要符合的关系  is-a  , 父类通用更抽象,子类更特殊更具体 类之间的关系 继承体现 组合体现 实现接口体现 继承的意义 代码重用 体现不同抽象层次 extends关键字 Sup ...

  8. 面向对象编程(十)——继承之Super关键字及内存分析

    Super关键字

  9. 继承及super关键字

    继承 继承的本质是对某一批类的抽象,从而实现对世界更好的建模 extend的意思是"扩展",子类是父类的扩展. Java中类只有单继承,没有多继承:儿子只能有一个亲生爸爸,一个爸爸 ...

  10. [Java学习]面向对象-super关键字;final关键字

    super关键字 super代表的是当前子类对象中的父类型特征,可以看做是this的一部分.与this不同,不是引用,不存储对象内存地址. super可以用在什么位置 1 可以用在成员方法中.不能用在 ...

随机推荐

  1. Protocol Buffers in HBase

    For early Hbase developers, it is often a nightmare to understand how the different modules speak am ...

  2. ASP.NET的运行原理与运行机制

    在Asp.net4和4.5中,新增了WebPages Framework,编写页面代码使用了新的Razor语法,代码更加的简洁和符合Web标准,编写方式更接近于PHP和以前的Asp,和使用WebFor ...

  3. 一键制作u盘启动盘教程

    第一步:制作完成u深度u盘启动盘   第二步:下载Ghost Win7系统镜像文件包,存入u盘启动盘   第三步:电脑模式更改成ahci模式,不然安装完成win7系统会出现蓝屏现象 正式安装步骤: u ...

  4. ROS主题发布订阅控制真实的机器人下位机

    先模拟控制小乌龟 新建cmd_node.ccpp文件: #include"ros/ros.h" #include"geometry_msgs/Twist.h" ...

  5. JSON:org.json的基本用法

    java中用于解释json的主流工具有org.json.json-lib与gson,本文介绍org.json的应用. 官方文档: http://www.json.org/java/ http://de ...

  6. 1、ViewModel类的构建和INoyifyPropertyChanged的应用

    public class SampleItem : INotifyPropertyChanged { public SampleItem() { } private string title; pub ...

  7. JSONObject put,accumulate,element的区别(转载)

    原文链接:http://ljhzzyx.blog.163.com/blog/static/3838031220126810430157/   public Object put (Object key ...

  8. JSP重定向传递参数

    我一个JSP程序,要实现前台提交数据给后台处理后,后台jsp自动跳转到另一个jsp页面,这种方式也叫重定向,重定向的方法有多种,暂时我试过的并且能成功的有两个: 一种是用 response.sendR ...

  9. BZOJ 1954 The xor-longest Path

    问题转化为一些数里面选两个数异或和最大. #include<iostream> #include<cstdio> #include<cstring> #includ ...

  10. Git的环境搭建

    Git时当下流行的分布式版本控制系统. 集中式版本控制系统的版本库是集中存放在中央处理器的,所以开发者要先从中央服务器获取最新的版本,编码后再将自己的代码发送给中央处理器.集中式版本控制系统最大的缺点 ...