ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:290.32KB ,
资源ID:8148302      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8148302.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java封装继承和多态.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java封装继承和多态.docx

1、java封装继承和多态1 方法方法是类或对象的行为特征的抽象,方法是类或对象最重要的组成部分访问修饰符 返回值的数据类型 方法名(参数1,参数2) 语句; return 返回值;访问修饰符public、protected、default、private返回值如果方法有返回值,则需要为方法指定返回类public void setName();/void关键字表示的是没有返回值的方法public String setName( return “湖北武汉”);/有返回值的方法使用return关键字指定其返回值 public int age(int num1, int num2)(return num

2、1 + num2);2 形参和实参的概念形参:全称为“形式参数”,是在定义方法名和方法体的时候使用的参数,用于接收调用该方法时传入的实际值实参:全称为“实际参数”,是在调用方法时传递给该方法的实际值调用方法时给定的实际参数类型要与定义方法时形式参数类型相同,而且顺序也要相同。Java中的方法不能独立存在,调用方法必须使用类或对象作为主调者。调用方法传入的参数称为实参。3 构造方法构造方法是用于初始化一个对象的内部状态的特殊方法class Test public static void main(String args) People my; my=new People(); my.age=20

3、; my.printAge; 无返回值,不需要void , 方法名只能是类名 () 语句块;class Person int age; Person() age = 18; /不带参数的构造方法 Person(int i) age = i; /带参数的构造方法 void setAge(int i) age = i; class Test public static void main(String args) Person p1=new Person(); Person p2=new Person(21); System.out.println(p1.age); System.out.prin

4、tln(p2.age); 构造方法定义构造方法class Person int age; Person(int i) age = i; /带参数的构造方法 void setAge(int i) age = i; class Test public static void main(String args) Person p1=new Person(); System.out.println(p1.age); public class Overload public void test() /无参数的构造方法 System.out.println(无参数方法); public void test

5、(String msg) /有参数的构造方法 System.out.println(重载方法,参数值为:+msg); public static void main(String args) Overload ol=new Overload(); ol.test(); ol.test(字符串); 构造方法的特殊性1、构造方法的主要作用是完成对类对象的初始化工作2、在创建new()中一个类的新对象时,系统会自动调用该类的构造方法为新对象初始化3、构造方法不能由编程人员显式地直接调用4、构造方法没有返回类型5、构造方法的方法名与类名相同在Java语言中,每个类都至少有一个构造方法如果类的定义者没有

6、显式地定义任何构造方法,java编译器将自动为类提供一个默认的构造方法,默认构造方法没有参数,默认构造方法没有方法体在Java类中,一旦类的定义者显式地定义了一个或多个构造方法,系统将不再提供默认的构造方法4 构造方法的重载方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可。在这种情况下,该方法被称为重载,这个过程称为方法的重载(overloading)class Person int age; Person() age = 18; /不带参数的构造方法 Person(int i) age = i; /带参数的构造方法 ,构造方法被重载了 void se

7、tAge(int i) age = i; 构造方法的调用Java编译器能根据调用方法时所传递的参数个数和类型选择相应的方法 class Person int age; Person() age = 18; /不带参数的构造方法 Person(int i) age = i; /带参数的构造方法 void setAge(int i) age = i; class Test /根据传递参数的不同,Java会自动选择相应的构造方法 public static void main(String args) Person p1=new Person(); Person p2=new Person(21);

8、 5 什么是静态变量静态变量是指被static修饰的变量静态变量属于某个类,被所有实例共享 可以通过类名访问或通过实例名访问静态变量编写一个猴子类(Monkey),要求在此类中存在一个变量,用于统计此类被实例化了多少个对象。 class Monkey static int count=0;/声明静态变量class Test public static void main(String args) for(int i=0;i3;i+) Monkey m=new Monkey(); m.count=m.count+1; /通过类名访问静态变量 System.out.println(Monkey.c

9、ount);静态变量与非静态变量的区别class Test public static void main(String args) StaticVar s1=new StaticVar(); s1.a+; s1.b+; System.out.println(实例变量a=+ s1.a); System.out.println(静态变量b=+StaticVar.b); StaticVar s2=new StaticVar(); s2.a+; s2.b+; System.out.println(实例变量a=+ s2.a); System.out.println(静态变量b=+ s2.b); 静态方

10、法:被static修饰的方法称为静态方法或类方法static 修饰符 返回值类型 方法名(类型 参数1,类型 参数2) 方法体静态方法可以直接通过类名访问class Test public static void main(String args) /示例化10个对象 for(int i=1;i=10;i+) Monkey houge=new Monkey(); /通过类名调用静态方法,静态方法直接通过类名来调用 Monkey.play(); 6 静态方法class Monkey int age=10; /实例变量age static int peach=10; static void pla

11、y() /访问实例变量 System.out.println(实例变量age=+age);/ 在静态方法内访问实例变量age /访问静态变量 System.out.println(实例变量peach=+peach); 静态方法只能访问静态变量,不能访问实例变量(1)可以通过类名直接调用该类的静态方法。(2)静态方法不能访问非静态的实例变量和实例方法。 (3)静态方法必须用static关键字修饰。(4)静态方法不能使用this关键字和super关键字,因为这两个关键字与特定的实例相关。(5)实例方法可以访问静态成员和非静态成员。 静态代码块不存在于任何方法体中。静态代码块只会被执行一次,它在Ja

12、va虚拟机加载类时执行class StaticBlock static/静态代码块 System.out.println(“我是静态代码块); class Order int a=1; static int b=1; /静态变量 System.out.println(实例变量a=+a); System.out.println(代码块执行!); static /静态代码块 System.out.println(静态变量b=+b); System.out.println(静态代码块执行!); Order() /构造方法 System.out.println(构造方法执行); 初始化顺序class

13、Test public static void main(String args) Order order=new Order(); 静态变量初始化静态代码块初始化静态方法初始化实例变量代码块构造方法Java中有3种变量,分别为类变量、实例变量和某个方法中临时定义的局部变量。不同变量的生命周期不同class Cycle int var1 = 1;/ 实例变量 static int var2 = 2; /静态变量 public int add() int var3 = var1 + var2; /局部变量 return var3; class Test public static void ma

14、in(String args) Cycle c=new Cycle(); c.add(); 7 继承继承是将已存在的类作为基础,建立新类的技术。相比已存在的类,新类的定义可以增加新的数据和新的功能,也可以使用已存在类的功能,但不能选择性地继承已存在的类。在Java的继承体系中,将已知类称为超类(或基类、父类),将新类称为子类。提供子类可以沿用父类的某些行为和特征的一种方式。在程序中使用继承,有利于程序的扩展class Engineer / 工程师类 private String name; private String address; public Engineer(String name,

15、String address) this.name = name; this.address = address; public void introduce() System.out.println(hello!我是来自于:+address+的+name); class Student /学生类 private String name; private String address; public Student(String name,String address) this.name = name; this.address = address; public void introduc

16、e() System.out.println(hello!我是来自于:+address+的+name); 每增加一个类将会增加一个相应的introduce方法,这样在程序中会存在大量的重复代码,导致程序的扩展性很差简单而言,继承是将程序中共同的特征和行为抽取出来建立一个类,使其他类可以沿用此类中的属性和方法。这样不仅可以减少程序中的重复代码,而且易于程序扩展在JAVA程序中,子类继承父类使用extends关键字修饰符 class 子类名 extends 超类名 属性定义 构造方法定义 方法声明1、在JAVA程序中,子类继承父类使用extends关键字 2、子类可以定义自身的属性和方法。 3、子

17、类不能获得超类的构造方法。继承的实现1.建立父类 class Person public String name = “person”; public void getInfo() System.out.println(“this is a person”); 2.使用extends建立子父类继承关系,子类通过extends父类 class Child extends Person public int age; public void play() 3,创建子类对象访问父类的属性和方法 class Demo public static void main(String args) Child

18、 child = new Child(); /子类通过实例化调用父类的方法 System.out.println(child.name); child.getInfo(); class Person public String name=Person; public int age = 0; public void eat() public class Child extends Person public String sex; public static void main(String args) Child child = new Child(); System.out.println

19、(child.age); /使用父类中的age属性 child.eat(); /调用父类中的方法 Java不存在多继承,即一个子类不允许有多个父类,例如: class Child extends Person,Car 继承具有传递性,即一个类可以既是子类,同时又是父类class Person public int age; public String sex; class Man extends Person /Man是Person的子类,同时又是Father的父类 public boolean marrired; public class Father extends Man public

20、String address; public void getInfo() System.out.println(“this is a father”): 在Java中,Object是所有类的父类,所有的Java类都直接或间接地继承了java.lang.Object类public class MyClass /* * public class Myclass相当于 * public class MyClass extends Object /Object类是所有类的父类,该类实际上隐式继承了Object */ 方法 描述clone() 创建并返回此对象的一个副本equals(Objectobj

21、) 指示其他某个对象是否与此对象“相等”hashCode() 返回该对象的哈希码值 notifyAll() 唤醒在此对象监视器上等待的所有线程 toString() 返回该对象的字符串表示 wait() 在其他线程调用此对象的 notify()方法或 notifyAll()方法前,导致当前线程等待public class Person public String name = person; public void printInfo() System.out.println(this is a person); class Child extends Person /子类继承父类 publi

22、c void printInfo() System.out.println(this is a child); public static void main(String args) Person person = new Child(); /父类引用指向子类对象 person.printInfo(); /调用子类中的方法 /* *Child child = (Child)new Person(); *自定义的数据类型不能够强制类型转换 */ 如果子类中定义了与父类中同名的属性和方法,此时需使用this调用子类中的属性和方法,要调用父类中的属性和方法需使用super在继承关系中,super和

23、this是两个经常使用的关键字 this : 表示当前对象本身 super: 表示对父类或超类的引用class Person public String name=Person ; public int age=0;public class Child extends Person public String sex; public int age = 2; public void getInfo() System.out.println(年龄是: +super.age);/ 子类方法中调用父类的属性或方法使用super System.out.println(年龄是: +this.age);/

24、 当前本身对象中调用自己的属性或方法使用this public static void main(String args) Child child = new Child (); child.getInfo(); 8 super与this在使用 this()和super()时,需要注意以下4个方面1、每个子类构造方法中首先会隐含地调用super(),然后执行构造方法中的代码2、super()和this()均需放在构造方法内的第一行3、 this()和super()不能同时出现在一个构造函数中4、this()和super()均不可以在static环境中使用。包括static方法、static语句

25、块super和this的区别 在Java中,final是修饰符,可以修饰类、方法和属性final修饰的类是最终类,其修饰方法为最终方法,final修饰的变量是常量;最终类不可以被继承,最终方法不可以被重写(之后讲解),常量必须赋初值同时不允许被修改。private和static修饰的方法隐式的是final方法。final class Base public void getInfo() System.out.println(this is super class); public class Student extends Base/最终类不允许被继承 private String name;

26、package com;class Base public final int age; /常量必须赋初值,且不可以重新赋值 public void getInfo() System.out.println(this is super class); public class Student extends Base private String name;9 多态多态性是指当不同的对象收到相同的消息时,产生不同的动作。对外只有一个入口,多种实现方式。即一个接口使用不同实例执行不同的操作。在Java中多态有两种表现形式,即: 方法重载(overload)与重写(override)public

27、class Farmer public void plantApple(Apple apple) System.out.println(“plant apple”); public void plantOrange(Orange orange) System.out.println(“plant orange”); 当季节变化时,需要增加相应的plant方法,并修改方法的参数类型,可扩展性和可维护性很差。多态性是指当不同的对象收到相同的消息时,产生不同的动作。对外只有一个入口,多种实现方式。即一个接口使用不同实例执行不同的操作。在Java中多态有两种表现形式,即: 方法重载(overload)

28、与重写(override)方法重载应用于同一个类中构造方法也可以重载方法的返回类型不做为区分方法重载的条件public class Book public float getPrice() return 50; public float getPrice(int bookPage) /方法名称相同,参数个数与类型不同 return 50*(bookPage/100); public float getPrice(int bookPage,float discount) return 50*(bookPage/100)*discount; public static void main(String args) Book book = new Book(); System.out.println(“图书的单价:”+book.getPrice(); System.out.println(“根据页数计算的价格:”+book.getPrice(200); System.out.println(“根据页数折扣的价格:”+book.getP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1