




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、参悟参悟JavaJava根底根底中心技术中心技术讲师:宋红康讲师:宋红康 新浪微博:尚硅谷新浪微博:尚硅谷- -宋红康宋红康一、一、Why is ?Java在各领域中的运用在各领域中的运用 从Java的运用领域来分,Java言语的运用方向主要表如今以下几个方面: 企业级运用:主要指复杂的大企业的软件系统、各种类型的网站。Java的平安机制以及它的跨平台的优势,使它在分布式系统领域开发中有广泛运用。运用领域包括金融、电信、交通、电子商务等。 Android平台运用:Android运用程序运用Java言语编写。Android开发程度的上下很大程度上取决于Java言语中心才干能否扎实。 挪动领域运用
2、,主要表如今消费和嵌入式领域,是指在各种小型设备上的运用,包括手机、PDA、机顶盒、汽车通讯设备等。1.从从java言语的诞生、特点说起言语的诞生、特点说起java之父Jgosling团队在开发Green工程时,发现C短少渣滓回收系统,还有可移植的平安性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。Java确实是从C言语和C+言语承继了许多成份,甚至可以将Java看成是类C言语开展和衍生的产物。比如Java言语的变量声明,操作符方式,参数传送,流程控制等方面和C言语、C+言语完全一样。但同时,Java是一个纯粹的面向对象的程序设计言语,它承继了 C+言语面向对象技
3、术的中心。Java舍弃了C言语中容易引起错误的指针以援用取代、运算符重载operator overloading、多重承继以接口取代等特性,添加了渣滓回收器功能用于回收不再被援用的对象所占据的内存空间。JDK1.5又引入了泛型编程Generic Programming、类型平安的枚举、不定长参数和自动装/拆箱java言语的主要特性言语的主要特性Java言语是易学的。言语是易学的。Java言语的语法与言语的语法与C言语和言语和C+言语很接近,使言语很接近,使得大多数程序员很容易学习和运用得大多数程序员很容易学习和运用Java。Java言语是强迫面向对象的。言语是强迫面向对象的。Java言语提供类
4、、接口和承继等原语,言语提供类、接口和承继等原语,为了简单起见,只支持类之间的单承继,但支持接口之间的多承继,为了简单起见,只支持类之间的单承继,但支持接口之间的多承继,并支持类与接口之间的实现机制关键字为并支持类与接口之间的实现机制关键字为implements。Java言语是分布式的。言语是分布式的。Java言语支持言语支持Internet运用的开发,在根运用的开发,在根本的本的Java运用编程接口中有一个网络运用编程接口运用编程接口中有一个网络运用编程接口java net,它提供了用于网络运用编程的类库,包括它提供了用于网络运用编程的类库,包括URL、URLConnection、Socke
5、t、ServerSocket等。等。Java的的RMI远程方法激活机制也远程方法激活机制也是开发分布式运用的重要手段。是开发分布式运用的重要手段。Java言语是强壮的。言语是强壮的。Java的强类型机制、异常处置、渣滓的自动搜的强类型机制、异常处置、渣滓的自动搜集等是集等是Java程序强壮性的重要保证。对指针的丢弃是程序强壮性的重要保证。对指针的丢弃是Java的明智选的明智选择。择。java言语的主要特性言语的主要特性Java言语是平安的。言语是平安的。Java通常被用在网络环境中,为此,通常被用在网络环境中,为此,Java提供提供了一个平安机制以防恶意代码的攻击。如:平安防备机制类了一个平安
6、机制以防恶意代码的攻击。如:平安防备机制类ClassLoader,如分配不同的名字空间以防替代本地的同名类、,如分配不同的名字空间以防替代本地的同名类、字节代码检查。字节代码检查。Java言语是体系构造中立的。言语是体系构造中立的。Java程序后缀为程序后缀为java的文件在的文件在Java平台上被编译为体系构造中立的字节码格式后缀为平台上被编译为体系构造中立的字节码格式后缀为class的文的文件,然后可以在实现这个件,然后可以在实现这个Java平台的任何系统中运转。平台的任何系统中运转。Java言语是解释型的。如前所述,言语是解释型的。如前所述,Java程序在程序在Java平台上被编译为平台
7、上被编译为字节码格式,然后可以在实现这个字节码格式,然后可以在实现这个Java平台的任何系统的解释器中运平台的任何系统的解释器中运转。转。Java是性能略高的。与那些解释型的高级脚本言语相比,是性能略高的。与那些解释型的高级脚本言语相比,Java的性的性能还是较优的。能还是较优的。Java言语是原生支持多线程的。在言语是原生支持多线程的。在Java言语中,线程是一种特殊的言语中,线程是一种特殊的对象,它必需由对象,它必需由Thread类或其子孙类来创建。类或其子孙类来创建。2.从从java言语的市场需求来看言语的市场需求来看2021年年2月月 TIOBE 编程言语排行榜单编程言语排行榜单2.从
8、从java言语的市场需求来看言语的市场需求来看2021年年2月月 TIOBE 编程言语排行榜单编程言语排行榜单二、二、如何对待如何对待java根底?根底?如何了解面向对象思想?如何了解面向对象思想?Java 根底根底l 深化讲授 java 言语的中心内容:l 涵盖 java 的根本语法构造、java的面向对象特征、java集合框架体系、java泛型、异常处置、java 注释、java的 io 流体系、java多线程编程、java网络通讯编程和 java 反射机制;l 覆盖了java.lang、java.util、java.text、java.io 和 java.nio、java.sql 包下绝
9、大部分类和接口。l 全面引见 java 7 的二进制整数、菱形语法、加强switch语句、多异常捕获、自动封锁资源的try语句、nio.2、aio等新特性。Java根底知识图解根底知识图解JAVA开展历程JAVA环境搭建根底程序设计数据类型流程控制运算符数组面向对象编程类和对象属性方法设计方式接口三大特性运用程序开发JDBC集合异常处置类库多线程IO反射网络Oracle/MySQLJAVA新特性Eclipse运用泛型枚举装箱/拆箱可变参数Annotation何谓何谓“面向对象的编程思想?面向对象的编程思想?顿 悟?OR 渐 悟?例子:人把大象装冰箱面向过程面向过程1.翻开冰箱2.把大象装进冰箱
10、3.把冰箱门关住面向对象面向对象人 冰箱大象人 翻开冰箱冰箱.开门; 操作大象 大象.进入冰箱; 封锁冰箱 冰箱.关门; 冰箱 开门 关门大象 进入冰箱 学习面向对象内容的三条主线学习面向对象内容的三条主线1.java类及类的成员2.面向对象的三大特征3.其它关键字1.java类及类的成员类及类的成员l 现实世界万事万物是由分子、原子构成的。同理,Java代码世界是由诸多个不同功能的类构成的。l 面向对象程序设计的重点是类的设计l 现实世界中的分子、原子又是由什么构成的呢?原子核、电子!那么,Java中用类class来描画事物也是如此l 属 性:对应类中的成员变量l 行 为:对应类中的成员方法
11、Field = 属性属性 = 成员变量,成员变量,Method = 成员方法成员方法 = 函函数数1.java类及类的成员类及类的成员类的成员构成类的成员构成 version 1.0语法格式:语法格式:定义类的属性:修饰符定义类的属性:修饰符 类型类型 属性名属性名 = 初值初值 ; 定义类的方法:修饰符定义类的方法:修饰符 前往值类型前往值类型 方法名方法名 参数列表参数列表 方法体语句;方法体语句; 类的成员构成类的成员构成 verson 2.01.java类及类的成员类及类的成员java类的实例化,即创建类的对象类的实例化,即创建类的对象l 类class和对象object是面向对象的中心
12、概念l 完成工程需求时:l 先去找具有所需功能的对象来用l 假设该对象不存在,那么创建一个具有所需功能的对象l 这样简化开发并提高复用如何运用java类? 可以了解为:类 = 汽车设计图;对象 = 实真实在的汽车 类的实例化: Car c = new Car; 类和对象的关系类和对象的关系面向对象思想面向对象思想“落地法那么落地法那么一一 运用运用new +构造器创建一个新的对象;构造器创建一个新的对象; 运用运用“对象名对象名.对象成员的方式访问对象成员包括属性对象成员的方式访问对象成员包括属性和方法;和方法; 假设创建了一个类的多个对象,对于类中定义的属性,每假设创建了一个类的多个对象,对
13、于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。个对象都拥有各自的一套副本,且互不干扰。 在一个类中:类中的方法可以直接访问类中的成员变量或在一个类中:类中的方法可以直接访问类中的成员变量或其它方法。例外:其它方法。例外:static方法访问非方法访问非static,编译不经过。,编译不经过。Java 类类数据1数据n方法1方法n属性属性方法方法Carwheelsmovestop数据属性数据属性方法方法类名类名c2:Carwheels=6movestopc1:Carwheels=4movestopnew Carnew Car举例举例Java 中类与对象举例中类与对象举例 练习:创建
14、练习:创建Java自定义类自定义类步骤:步骤:定义类思索修饰符、类名定义类思索修饰符、类名编写类的属性思索修饰符、属性类型、属性名、初编写类的属性思索修饰符、属性类型、属性名、初始化值始化值编写类的方法思索修饰符、前往值类型、方法名、编写类的方法思索修饰符、前往值类型、方法名、形参等形参等提示:提示:定义定义Person、Animal、Bird、Zoo等类,加以领会。等类,加以领会。2.面向对象的三大特征面向对象的三大特征封装 Encapsulation承继 Inheritance多态 Polymorphism运用者对类内部定义的属性对象的成员变量的直接操作会导致数据的错误、混乱或平安性问运用
15、者对类内部定义的属性对象的成员变量的直接操作会导致数据的错误、混乱或平安性问题。题。public class Animal public int legs; public void eatSystem.out.println“Eating.; public void moveSystem.out.println“Moving.; public class Zoo public static void mainString args Animal xb=new Animal; xb.legs=4; System.out.printlnxb.legs; xb.eat;xb.move; 问题:问题:
16、xb.legs = -1000;应该将应该将legs属性维护起来,属性维护起来,防止乱用。防止乱用。维护的方式:信息隐藏维护的方式:信息隐藏2.1 面向对象的特征一:封装性面向对象的特征一:封装性 Java中经过将数据声明为私有的private,再提供公共的public方法:getXxx和setXxx实现对该属性的操作,以实现下述目的:隐藏一个类中不需求对外提供的实现细节;运用者只能经过事先定制好的方法来访问数据,可以方便地参与控制逻辑,限制对属性的不合理操作;便于修正,加强代码的可维护性;面向对象思想面向对象思想“落地法那么落地法那么二二public class Animalprivate
17、int legs;/将属性将属性legs定义为定义为private,只能被,只能被Animal类内部访问类内部访问public void setLegsint i /在这里定义方法在这里定义方法 eat 和和 move if i != 0 & i != 2 & i != 4 System.out.printlnWrong number of legs!; return;legs=i;public int getLegsreturn legs; public class Zoopublic static void mainString argsAnimal xb=new Anim
18、al;xb.setLegs4; /xb.setLegs-1000; xb.legs=-1000; /非法非法System.out.printlnxb.getLegs; Java权限修饰符public、protected、private置于类的成员定义前,用来限定对象对该类成员的访问权限。四种访问权限修饰符四种访问权限修饰符修饰符修饰符类内部类内部同一个包同一个包子类子类任何地方任何地方privateYes缺省YesYesprotectedYesYesYespublicYesYesYesYes对于class的权限修饰只可以用public和default缺省。public类可以在恣意地方被访问。d
19、efault类只可以被同一个包内部的类访问。privatedefaultprotectedpublic相应的调用者2.2 面向对象的特征二:承继性面向对象的特征二:承继性一样的代码特有的代码特有的代码特有的代码特有的代码学生类教师类工人类农民类人类经过“承继实现承继的思想承继的思想教师类学生类工人类兽医类人类承继 extendsl 承继的思想承继的思想l 多个类中存在一样属性和行为时,将这些内容抽取多个类中存在一样属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性到单独一个类中,那么多个类无需再定义这些属性和行为,只需承继那个类即可。和行为,只需承继那个类即可。l 此处的
20、多个类称为子类,单独的这个类称为父类此处的多个类称为子类,单独的这个类称为父类基类或超类。可以了解为基类或超类。可以了解为:“子类子类 is a 父类父类l 类承继语法规那么类承继语法规那么:l class Subclass extends Superclass 面向对象思想面向对象思想“落地法那么落地法那么三三l 经过承继,简化Student类的定义:public class Person public String name; public int age; public Date birthDate; public String getInfo .public class Student
21、 extends Person public String school;/Student类承继了父类Person的一切属性和方法,并添加了一个属性school。Person中的属性和方法,Student都可以利用。PersonPerson+name : String +age : int+birthDate : Date+getInfo : StringStudentStudent+school : String2.2 面向对象的特征二:承继性面向对象的特征二:承继性l 子类承继了父类,就承继了父类的方法和属性。l 在子类中,可以运用父类中定义的方法和属性,也可以创建新的数据和方法。l 在J
22、ava 中,承继的关键字用的是“extends,即子类不是父类的子集,而是对父类的“扩展。关于承继的规那么:关于承继的规那么:子类不能直接访问父类中私有的子类不能直接访问父类中私有的private的成员变量和方法。的成员变量和方法。2.2 面向对象的特征二:承继性面向对象的特征二:承继性承继举例承继举例Person+name : String +age : int+birthDate : Date+getInfo : StringStudent+school : StringSoldierOfficerGraduate+major : String+register : voidsupercl
23、asssubclasssubsubclassl Java只支持单承继,不允许多重承继l 一个子类只能有一个父类l 一个父类可以派生出多个子类l class SubDemo extends Demo /okl class SubDemo extends Demo1,Demo2./error多重承继多重承继多层承继多层承继2.2 面向对象的特征二:承继性面向对象的特征二:承继性练习练习 1.1定义一个ManKind类,包括成员变量int sex和int salary;方法void manOrWorman:根据sex的值显示“mansex=1或者“womensex=0;方法void employee
24、d:根据salary的值显示“no jobsalary=0或者“ jobsalary!=0。 2定义类Kids承继ManKind,并包括成员变量int yearsOld;方法printAge打印yearsOld的值。 3在Kids类的main方法中实例化Kids的对象someKid,用该对象访问其父类的成员变量及方法。2.3 面向对象的特征三:多态性面向对象的特征三:多态性l 多态性,是面向对象中最重要的概念,在java中有两种表达:l 方法的重载overload和重写overwrite。l 对象的多态性 :父类的援用指向子类对象实体l 可以直接运用在笼统类和接口上2.3 面向对象的特征三:多
25、态性多态思想的运用实例多态思想的运用实例Connection3ConnectionConnection2Connection1l 对象的多态 l Person p = new Student;lObject o = new Person;/Object类型的变量o,指向Person类型的对象lo = new Student; /Object类型的变量o,指向Student类型的对象l 虚拟方法调用多态情况下l Person e = new Student;l e.getInfo; /调用Student类的getInfo方法面向对象思想面向对象思想“落地法那么落地法那么四四编译时e为Person
26、类型,而方法的调用是在运转时确定的,所以调用的是Student类的getInfo方法。动态绑定较高级的根本数据类型较低级的根本数据类型自动类型转化强迫类型转化父类如:Person子类如:Student向上转型向下转型运用instanceof进展判别3.其它关键字其它关键字 this super static final abstract interfacel 在java中,this关键字比较难了解,它的作用和其词义很接近。l 它在方法内部运用,即这个方法所属对象的援用;l 它在构造器内部运用,表示该构造器正在初始化的对象。l this表示当前对象,可以调用类的属性、方法和构 l 造器l 什么时
27、候运用this关键字呢?l 当在方法内需求用到调用该方法的对象时,就用this。关键字关键字thisthis是什么?是什么? l 运用运用this,调用属性、方法,调用属性、方法class Person/ 定义Person类private String name ;private int age ;public PersonString name,int = name ; this.age = age ; public void getInfoSystem.out.println姓名: + name ;this.speak;public void speakSyste
28、m.out.println“年龄: + this.age; 1.当形参与成员变量重名时,假设在方法内部需求运用成员变量,必需添加this来阐明该变量时类成员 2.在恣意方法内,假设运用当前类的成员变量或成员方法可以在其前面添加this,加强程序的阅读性class Person/ 定义Person类private String name ;private int age ;public Person / 无参构造System.out.println新对象实例化 ;public PersonString namethis; / 调用本类中的无参构造方法 = name ;publi
29、c PersonString name,int agethisname ; / 调用有一个参数的构造方法this.age = age;public String getInforeturn 姓名: + name + ,年龄: + age ; l 运用运用this调用本类的构造器调用本类的构造器3.this可以作为一个类中,构造方法相互调用的特殊格式关键字关键字superl 在Java类中运用super来调用父类中的指定操作:l super可用于访问父类中定义的属性l super可用于调用父类中定义的成员方法l super可用于在子类构造方法中调用父类的构造器l 留意:l 尤其当子父类呈现同名成
30、员时,可以用super进展区分l super的追溯不只限于直接父类l super和this的用法相像,this代表本类对象的援用,super代表父类的内存空间的标识关键字关键字super举例举例class Person protected String name=张三; protected int age;public String getInfo return Name: + name + nage: + age; class Student extends Person protected String name = 李四;private String school = New Orien
31、tal;public String getSchool return school; public String getInfo return super.getInfo +nschool: +school; public class TestStudentpublic static void mainString argsStudent st = new Student;System.out.printlnst.getInfo; 当我们编写一个类时,其实就是在描画其对象的属性和行为,而并没有产生本质上的对象,只需经过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外
32、部调用。我们有时候希望无论能否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只需一份,例如一切的中国人都有个国家称号,每一个中国人都共享这个国家称号,不用在每一个中国人的实例对象中都单独分配一个用于代表国家称号的变量。关键字关键字static关键字关键字staticl class Circlelprivate double radius;lpublic Circledouble radiusthis.radius=radius;lp u b l i c d o u b l e f i n d A r e a r e t u r n Math.PI*radius*radius
33、;l 创建两个Circle对象l Circle c1=new Circle2.0;/c1.radius=2.0l Circle c2=new Circle3.0;/c2.radius=3.0l Circle类中的变量radius是一个实例变量instance variable,它属于类的每一个对象,不能被同一个类的不同对象所共享。l 上例中c1的radius独立于c2的radius,存储在不同的空间。c1中的radius变化不会影响c2的radius,反之亦然。假想象让一个类的一切实例共享数据,就用类变量!假想象让一个类的一切实例共享数据,就用类变量!类属性、类方法的设计思想类属性、类方法的设
34、计思想l 类属性作为该类各个对象之间共享的变量。在设计类时,分析哪些类属性不因对象的不同而改动,将这些属性设置为类属性。相应的方法设置为类方法。l 假设方法与调用者无关,那么这样的方法通常被声明为类方法,由于不需求创建对象就可以调用类方法,从而简化了方法的调用class Circle private double radius;public static String name = 这是一个圆;public static String getNamereturn name;public Circledouble radius getName;this.radius = radius;publi
35、c double findArea return Math.PI * radius * radius;public void displaySystem.out.printlnname:+name+radius:+radius;public class TestStatic public static void mainString args Circle c1 = new Circle2.0;Circle c2 = new Circle3.0;c1.display;c2.display;栈堆静态域c1:c2:radius:2.0name:radius:3.0name:name:圆关键字关键字
36、finall 在Java中声明类、属性和方法时,可运用关键字final来修饰,表示“最终。l final标志的类不能被承继。提高平安性,提高程序的可读性。l final标志的方法不能被子类重写。l Object类中的getClass。l final标志的变量成员变量或部分变量即称为常量。称号大写,且只能被赋值一次。l final标志的成员变量必需在声明的同时或在每个构造方法中或代码块中显式赋值,然后才干运用。l final double PI=3.14;1.final修饰类修饰类final class Aclass B extends A /错误,不能被承继。中国古代,什么人不能有后代,就可以
37、被final声明,称为太监类!2.final修饰方法修饰方法class A public final void print System.out.println“A; class B extends A public void print /错误,不能被重写。 System.out.println“尚硅谷; 3.final修饰变量修饰变量常量常量class A private final String INFO = “atguigu; /声明常量 public void print /INFO = “尚硅谷; 常量名要大写,内容不可修正。好似古代皇帝的圣旨。l static final:全局常
38、量笼统类笼统类abstract classl 随着承继层次中一个个新子类的定义,类变得越来越详细,而父类那么更普通,更通用。类的设计应该保证父类和子类可以共享特征。有时将一个父类设计得非常笼统,以致于它没有详细的实例,这样的类叫做笼统类。关键字关键字abstract笼统笼统l 用abstract关键字来修饰一个类时,这个类叫做笼统类;l 用abstract来修饰一个方法时,该方法叫做笼统方法。l 笼统方法:只需方法的声明,没有方法的实现。以分号终了:abstract int abstractMethod int a ;l 含有笼统方法的类必需被声明为笼统类。l 笼统类不能被实例化。笼统类是用来
39、被承继的,笼统类的子类必需重写父类的笼统方法,并提供方法体。假设没有重写全部的笼统方法,仍为笼统类。l 不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法。笼统类举例笼统类举例abstract class A abstract void m1 ; public void m2 System.out.printlnA类中定义的m2方法; class B extends A void m1 System.out.printlnB类中定义的m1方法; public class Test public static void main String args A a = new B ; a.m1 ; a.m2 ; 关键字关键字interface接接 口口l 有时必需从几个类中派生出一个子类,承继它们一切的属性和方法。但是,Java不支持多重承继。有了接口,就可以得到多重承继的效果。l 接口interface是笼统方法和常量值的定义的集合。l 从本质上讲,接口是一种特殊的笼统类,这种笼统类中只包含常量和方法的定义,而没有变量和方法的实现。l 实现接口类:l class SubClass implements InterfaceA 运发动运发动笼统类笼统类学生学生笼统类笼统类篮球运篮球运发动发动大学生大学生跨栏运跨栏运发动发动中学生中学生学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度海洋资源开发入股合作协议书
- 2025年度智慧城市终止合作协议书
- 二零二五年度借调人员工作纪律与行为规范合同
- 二零二五年度智慧停车系统物业管理交接书
- 二零二五年度实习教师实习单位实习成果分享与合作协议
- 2025年度跨境电商就业协议书协议内容创新应用
- 2025年度股权投资基金股权转让与工商注册全程代理合同
- 2025年度生态公园景观设计施工一体化合同
- 2024年下半年成都市事业单考试试题
- 二零二五年度公司员工团队协作对赌协议书
- 医疗事故分级标准
- (2024年)气胸完整课件
- (高清版)DZT 0212.4-2020 矿产地质勘查规范 盐类 第4部分:深藏卤水盐类
- 昆明理工大学生物化学与分子生物学专业考研复试面试问题整理附面试技巧自我介绍
- 设计伦理研究基于实践 价值 原则和方法的设计伦理思考
- 医疗器械使用时的常见不良反应
- 多绳摩擦式矿井提升机毕业设计样本
- 急性心肌梗死早期护理要点
- 医院感染护理业务学习
- 新生儿母婴早接触课件
- 2024中宣部下属事业单位考试题
评论
0/150
提交评论