以程序为例,讲解java中包,类,构造函数,成员变量,成员方法,重载,接口,SUPER,继承,多态,static,final等

作者&投稿:苌平 (若有异议请与网页底部的电邮联系)
Java中super是什么意思?~

super在java的子类中指代父类引用
java中,super的几种用法:
1、子类的构造函数如果要引用super的话,必须把super放在函数的首位
class Base { Base() { System.out.println("Base"); }}public class Checket extends Base { Checket() { super();//调用父类的构造方法,一定要放在方法的首个语句 System.out.println("Checket"); } public static void main(String argv[]) { Checket c = new Checket(); }}如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。


2、在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.
class Country { String name; void value() { name = "China"; }} class City extends Country { String name; void value() { name = "Hefei"; super.value();//不调用此方法时,super.name返回的是父类的成员变量的值null System.out.println(name); System.out.println(super.name); } public static void main(String[] args) { City c=new City(); c.value(); }}为了在子类中引用父类中的成员变量name和方法value(),在代码中使用了super、super.name和super.value(),若不调用super.value()时,super.name返回父类成员变量默认值null,调用此方法时,super.value()方法把成员变量name赋值为China,再利用super.name调用父类的成员变量的值。

另外,要注意的是super.name调用的是成员变量的
class Country { String name="xianfan"; String value(String name) { name = "China"; return name; }} class City extends Country { String name; String value(String name) { name = "Hefei"; super.value("失败");//不调用此方法时,super.name返回的是父类的成员变量的值null System.out.println(name); System.out.println(super.name); return name; } public static void main(String[] args) { City c=new City(); c.value("成功"); }}结果为:Hefei
xianfan
此时,super.name返回的值是父类成员变量的值xianfan,而此时的super.value()方法是不起作用的。

3、用super直接传递参数:
class Person { public static void prt(String s) { System.out.println(s); } Person() { prt("A Person."); } Person(String name) { prt("A person name is:" + name); }} public class Chinese extends Person { Chinese() { super(); // 调用父类构造函数(1) prt("A chinese.");// (4) } Chinese(String name) { super(name);// 调用父类具有相同形参的构造函数(2) prt("his name is:" + name); } Chinese(String name, int age) { this(name);// 调用当前具有相同形参的构造函数(3) prt("his age is:" + age); } public static void main(String[] args) { Chinese cn = new Chinese(); cn = new Chinese("kevin"); cn = new Chinese("kevin", 22); }}结果为:A Person.

A chinese.
A person name is:kevin
his name is:kevin
A person name is:kevin
his name is:kevin
his age is:22
在这段程序中,this和super不再是像以前那样用“.”连接一个方法或成员,而是直接在其后跟上适当的参数,因此它的意义也就有了变化。super后加参数的是用来调用父类中具有相同形式的构造函数,如1和2处。this后加参数则调用的是当前具有相同参数的构造函数,如3处。当然,在Chinese的各个重载构造函数中,this和super在一般方法中的各种用法也仍可使用,比如4处,你可以将它替换为“this.prt”(因为它继承了父类中的那个方法)或者是“super.prt”(因为它是父类中的方法且可被子类访问),它照样可以正确运行。

1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句)
2)this(参数):调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句)
3)super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)
4)this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名)

5)调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。
   6)super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。
   7)super()和this()均需放在构造方法内第一行。
   8)尽管可以用this调用一个构造器,但却不能调用两个。
   9)this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。
   10)this()和super()都指的是对象,所以,均不可以在static环境中使用。包括:static变量,static方法,static语句块。
   11)从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

您好,
一、成员变量(类或对象的状态)
1、认识成员变量(类或对象的状态)、类变量、实例变量、局部变量、方法参数之间的区别
成员变量(field)是没有定义在代码块(包括初始化块、成员方法)中的变量。成员变量是类变量还是实例变量取决于在其声明中是否使用了static关键字。
类变量在声明是用了static关键字,它的另一个名字叫静态变量、静态成员变量(static field) 。
实例变量是在声明时没有使用static关键字的成员变量,它的另一个名字叫非静态成员变量(non-static field)。
定义在代码块里的变量被称为局部变量(local variable)。
定义在方法声明中的变量叫方法参数。
[java] view plaincopyprint?public class Lesson08 { // 类变量 static String s1 = "类变量"; // 实例变量 String s2 = "实例变量"; // 初始化代码块里的局部变量 { String s3 = "初始化代码块里的局部变量"; System.out.println(s3); } // 静态初始化代码块里的局部变量 static { String s4 = "静态初始化代码块里的局部变量"; System.out.println(s4); } // 方法的参数和方法里的局部变量 public void printString(String s5) { String s6 = "方法里的局部变量"; System.out.println("方法的参数:"+s5); System.out.println(s6); } // 类方法 public static void printString() { String s7="类方法里的局部变量"; System.out.println(s7); } // main方法 public static void main(String[] args) { //调用类方法 Lesson08.printString(); //打印类变量 System.out.println(s1); //创建对象 Lesson08 lesson = new Lesson08(); //打印实例变量 System.out.println(lesson.s2); //调用实例方法 lesson.printString("参数的值"); } }

对于他们之间的区别,我们在以后的学习中你会越来越清晰的。
2、变量的初始化
实例变量一经定义就会有初始值,局部变量定义时不赋初值而直接使用,编译器会报错
[java] view plaincopyprint?public class Lesson08_1 { int i; static int j; { int k; System.out.println(k); } static { int l; System.out.println(l); } public void print(String m){ System.out.println(m); } // main方法 public static void main(String[] args) { int n; System.out.println(n); Lesson08_1 lesson =new Lesson08_1(); lesson.print("m"); } }

运行程序,查看结果:

然后我们再给局部变量都附上初值,再把实例变量和类变量都打印出来看看,代码如下:
[java] view plaincopyprint?public class Lesson08_1 { int i; static int j; { int k=2; System.out.println(k); } static { int l=2; System.out.println(l); } public void print(String m){ System.out.println(m); } // main方法 public static void main(String[] args) { System.out.println(j); int n=2; System.out.println(n); Lesson08_1 lesson =new Lesson08_1(); lesson.print("m"); System.out.println(lesson.i); } }

运行程序,查看结果:

我们看到类变量和实例变量没赋值照样有值打印出来,我们也看到int的初始值是0 。
实例变量和类变量的类型 初始值
整数 0
浮点类型 0.0
字符类型 ‘/u0000′
布尔类型 boolean false
引用数据类型(譬如数组、接口、类) null

二、方法(类或对象的行为)

1、方法
Java中类的行为由类的成员方法来实现。类的成员方法由方法的声明和方法体两部分组成。

修饰符,可选,用于指定谁有权限访问此方法。
返回值类型,必选,用于指定该方法的返回值数据类型;如果该方法没有返回值,则要用关键字 void 进行标示。方法的返回值只能有一个。
参数列表,可以有0到多个,多个参数之间要用逗号隔开,参数的写法形如:String[] args, int age 这样。
方法名,必选,这个……,好吧命名规则是方法名和变量名的首字母要小写,别丢我人,弄个大写方法名出来。
方法体,可选,这个……,
大括号,大括号不写的方法叫抽象方法。
2、属性和方法之间的关系
有句绕口令是这么说的:“状态影响行为,行为影响状态”。你有没有想过这问题,如果每个对象都是从同一个类中生成出来,每个对象如果都一摸一样,那么这个世界是不是太无趣了。好在,我们看到前面的例子中,小狗的大小属性影响了他叫的方式。通过设置狗大小的方法又改变了它的状态。这些属性和方法的细节上的不同导致了,多姿多彩的对象,我们后面还会讲到更多的技术,也会导致更多的多样性。
三、方法重载 overload
Java里可以提供同一个方法的多个不同参数的版本供我们调用,譬如上面的小白,它叫 bark() 的方法有两种,一种是很随意的叫,无拘无束的叫,还有一种是根据它心情的不同来叫,当然我还可以再定义一个方法可以让他根据主人的脸色来叫,我们也可以再定义一个方法,穿的参数是食物,那么它的叫声可能就是边吃边幸福的吼叫了…… 这样一个bark方法就带来了丰富多彩的变化。
在Java 中允许类定义中多个方法的方法名相同,只要它们的参数声明不同即可。这种情况下,该方法就被称为重载(overloaded ),这种方式就叫做方法重载(method overloading )。方法重载是实现程序多样性的一个重要手段。也可以称作多态的一种表现方式。


什么是JA指令?
汇编语言中JB、JA都是条件转移指令,常用于比较两个无符号数的大小,判断条件是CF、ZF状态的组合。为确定CF、ZF状态,转移前用CMP指令设置标志位(CMP A,B)。其中:指令JA表示 CF=0 且ZF=0 即A>B转移。指令JB表示 CF=1 且ZF=0 即A <B转移。许多汇编程序为程序开发、汇编控制、辅助调试提供...

ja是什么
答案: JA通常指的是Java编程语言或者Java应用程序的简称。详细解释:1. Java编程语言:JA可能是指Java编程语言。Java是一种广泛使用的编程语言,特别在企业级应用和系统开发领域受到青睐。它以其跨平台能力、面向对象特性和强大的类库而闻名。通过编写一次Java代码,开发者可以将其运行在多平台上,无需进行...

JacaSE应用程序设计 目录
1.1 Java技术概述: 了解Java的核心概念,包括其设计哲学和广泛应用领域。1.2 Java平台核心机制: 探索Java运行环境的结构和工作原理。1.3 Java开发环境安装及配置: 如何设置开发环境,包括IDE的安装和基本配置。1.4 第一个Java程序: 通过实例学习编写简单的Java程序。2. 面向对象程序设计入门 2.1 概...

ja报表是什么意思?
JA报表是什么意思?JA是Java Authentication and Authorization Service的缩写。简单的说,JA报表是一种安全管理报表,主要通过提供认证和授权来保护Java应用程序中的资源。JA报表可以帮助用户通过用户凭据登录到系统中并限制用户对资源的访问。Java应用程序中使用的资源可以包括数据库、文件和网络服务等。JA报表...

JacaSE应用程序设计 内容提要
特别关注的是,书中的10与NIO部分,以及泛型、注解和多线程编程等技术,为读者提供了深入理解Java编程的基石。此外,还有Socket网络编程和JDBC数据库编程的内容,使读者能够实践与实际项目相关的技能。无论是对于没有其他编程基础的新手,还是希望提升Java开发技能的程序员,本书都提供了丰富的实例,确保读者...

汇编中jb, jb, jb, jb, jb什么意思?
汇编语言中JB、JA都是条件转移指令,常用于比较两个无符号数的大小,判断条件是CF、ZF状态的组合。为确定CF、ZF状态,转移前用CMP指令设置标志位(CMP A,B)。其中:指令JA表示 CF=0 且ZF=0 即A>B转移。指令JB表示 CF=1 且ZF=0 即A <B转移。许多汇编程序为程序开发、汇编控制、辅助调试提供...

Java学习的方法有哪些?
促进学习的深入和知识水平的提高。5.初学Ja主要接触Ja的程序结构,包括了循环、数组、类和方法以及字符串处理等内容。在学习期间,上课一定要认真听老师的讲解,特别是课后练习和上机的题目,以及老师提供的有关学习编程语言的方法和技巧,对于巩固所学的理论知识有很大的帮助。

Jaav高人帮忙写个程序说明,我刚学这个,3Q,高分,万分感激~~~!!_百度...
public static void main(String[] args)\/\/对于Java类里的main方法是程序入口,就是从这里开始读 { JiSuan a = JiSuanGC.getJisuan("add");\/\/往Add方法传两个参数,实现两数相加,输出结果为4 System.out.println(a.JiSuan(2, 2));} } 我就说这么多吧,希望对你有帮助;初学我建议看看...

ja是什么版本
以iPhone为例,ja是日本版本。苹果ja属于日本版本的iPhone产品,这个版本与国内行货版本是有比较大的差异的。日本版本或者是韩版在网络制式上它是不能够支持电信3G以及2G网络。苹果iPhone是苹果公司研发及销售的智能手机系列,搭载着苹果公司自行研发的iOS移动操作系统,第一代iPhone于2007年1月9日由发布。苹...

编写程序、分别利用while循环、do…while循环和for循环求出100-200的...
int s=0;for(int i=100;i<201;i++){ s=s+i;} System.out.println(s);int j=100;int h=0;do { h=h+j;j++;}while(j<201);System.out.println(h);int o=100;int l=0;while(o<201){ l=l+o;o++;} System.out.println(l);

泰和县17143887016: JAVA 语句 中 包 和类分别是什么意思 -
郸红丹蒌: 包是用来组织众类的,而类是指现实生活中每个对象的抽象表示,万物皆对象,所以就有好多的类编写的话,那么包就能很好的组织起来这些包

泰和县17143887016: Java程序中如何分辨出包,类,域,和方法?
郸红丹蒌: 包是在程序开头引用的,如 import java.io. *; 是application中引用所用的 , import java.applet. *;import java. awt .* ;import java.awt.event. *; 是applet中常引用的包.包的概念相当于C语言中#include “stdio.h"头文件的引用. 类以class 为标志,在一个完整的程序中只能有一个主类,以public为标志.在一个程序中可以有很多的类,java程序的设计的关键在于如何编好类. 域是定义类时的变量,保存类或对象的数据.域的类型可以是java任意的数据类型,在一个类中域名应该是唯一的. 方法就相当于c语言的函数的概念.

泰和县17143887016: java的包是怎样一回事 -
郸红丹蒌: Java语言里的包的概念:为了更好的组织类,Java提供了包机制.包是类的容器,用于分隔类名空间. 像上面这种文绉绉的定义根本不用去记它,重要的是了解为什么要使用包,这样不就都明白了么? Java提供包,最重要的原因就是为了解决...

泰和县17143887016: Java中包,类,对象有什么区别啊? -
郸红丹蒌: 你好,分别回答每个问题. 1. 如果这个.java文件的最上面有package ... 这段代码,就表示这个文件中的类都在一个包下,否则就没有包的概念. 2.就是你说的,正确. 3. 类是模版,只有一个,对象就是具体的东西.加入我有一个汽车类(模版),然后我分别创建奥迪 奔驰 法拉利 这些个汽车,这里的具体的车就是对象.

泰和县17143887016: 简述java中包的概念,语法和用法.
郸红丹蒌: 您好,提问者: 包其实是java的一种特殊叫法而已,跟windows系统的文件没什么太大的却别. 我们在程序中经常看的就是.jar 其实这个就是一个压缩包,如果要想使用压缩包里面的内容,那么可以再类的头部用 import java.xxx.xxx;导入即可.

泰和县17143887016: Java中 包、块、类、对象、都什么意思啊,能举例子说明吗,初学者学习 -
郸红丹蒌: 2.Java中的类和对象【第一部分草案】 收藏(本章的学习量相对比较大,我把整体分为三个部分讲解,第一个部分和第二个部分为Java关于类和对象以及OO的基础,第三个部分为在OO设计技巧中针对Java程序的一些性能提升的小技巧,因为...

泰和县17143887016: java jsp 中包、类、接口等的命名规则?
郸红丹蒌: 类命名规则 基本命名规则: 类、接口命名 命名规则:以大写字母开头,假如有多个英文本词,每个英文本词头字母大写 例如:StudentInfo 接口命名 命名规则:以大写字母"I"开头,假如有多个英文本词,每个英文本词头字母大写 例如:...

泰和县17143887016: java 中程序文件、包、类的联系和区别是?
郸红丹蒌: 程序文件由包组成 类组成包

泰和县17143887016: JAVA编程
郸红丹蒌: Java 的一些基本概念 Java 中包的概念,类的说明符与内部类 Java 的常用包与数组的复制与排序 Java 的多线程,程序、进程和线程的概念 Java 中的集合类的讲解 Java I/O 操作与字节流 Java 图形界面编程 Applet 编程 Java 网络编程

泰和县17143887016: 请教大家JAVA中包的作用,什么情况下才需要引用包? -
郸红丹蒌: 在jdk的lib目录下,有一个tools.jar文件,里面提供了写java程序要用的类(这些是sun公司写好的类,供程序员使用的).当你自定义自己的类时,如果要用到tools.jar中的类的时候,就必须要告诉编译器,自定义类中用到的类是从哪里来的,编...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网