Javaoop5.docx

上传人:b****8 文档编号:10461028 上传时间:2023-02-13 格式:DOCX 页数:12 大小:18.11KB
下载 相关 举报
Javaoop5.docx_第1页
第1页 / 共12页
Javaoop5.docx_第2页
第2页 / 共12页
Javaoop5.docx_第3页
第3页 / 共12页
Javaoop5.docx_第4页
第4页 / 共12页
Javaoop5.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Javaoop5.docx

《Javaoop5.docx》由会员分享,可在线阅读,更多相关《Javaoop5.docx(12页珍藏版)》请在冰豆网上搜索。

Javaoop5.docx

Javaoop5

程序包

Java提供的一种管理类的机制

定义包小写

package包名;

package包名1.包名2.包名3

package语句必须写在程序的第一行

导入程序包

import语句的一般形式:

importjava.util.*;

importjava.util.List;

默认导入java.lang包

访问修饰符

public公共的

protected受保护的

private私有的

不写友好的

对象a的位置

私有成员

友好成员

受保护成员

公有成员

在类A中,a访问成员

允许

允许

允许

允许

在与A同包中的另一个类中a访问成员

不允许

允许

允许

允许

在与A不同包的另一个类中a访问成员

不允许

不允许

不允许

允许

在不同包的子类

不允许

不允许

允许

允许

 

Static

可以修饰方法,成员变量,代码块及内部类

表示全局的不依赖对象即不需要实例化对象就可以使用

静态成员是所有对象共享的对静态成员的修改会反映到所有实例

通过类名直接访问成员

修饰成员变量:

称为类变量或静态变量

修饰方法:

称为类方法或静态方法

修饰代码块:

称为静态块

类加载时就执行用于初始化static变量

在调用任何方法之前执行

注意事项:

1.静态方法只能直接访问静态数据

要调用非静态方法需要通过对象调用

2.不能使用thissuper

publicclassTestStatic{

publicstaticvoidmain(String[]args){

//直接通过类名访问静态成员

System.out.println("未创建任何实例对象时:

count="+Chinese.getCount());

Chineseone=newChinese("对象1");

Chinesetwo=newChinese("对象2");

Chinesethree=newChinese("对象3");

System.out.println("创建对象个数:

count="+Chinese.getCount());

}

}

classChinese{

//final表示不能被修改且作为成员变量时必须初始化

publicfinalstaticStringCOUNTYR="中国";//每个chinese都有一个共享的国家名称

privateStringname;//实例变量

privatestaticintCOUNT;//类变量(静态变量)用于统计对象个数

//静态块主要用来初始化静态变量

static{

COUNT=0;

System.out.println("静态块在调用任何方法之前执行只执行一次用于初始化静态变量");

}

publicChinese(Stringname){

this.name=name;

COUNT++;

System.out.println("执行构造方法初始化实例变量");

}

//实例方法

publicStringgetName(){

returnthis.name;

}

//静态方法

publicstaticintgetCount(){

//System.out.println(msg);//不能直接访问非静态成员

returnCOUNT;

}

}

Java继承

指父类的特征和行为传给子类

被继承的类称为"基类"或"父类",继承的类称为"派生类"或"子类"

子类可以继承父类的所有成员(除了构造函数、private声明的成员)

在声明类时如果没有指定基类则继承java.lang.Object

主要作用:

子类可以重用父类中的代码并扩展基类的功能

注意:

1.单继承

2.子类和父类不在同一个包中时,

子类只能继承父类声明为protected、public的成员

3.创建子类时父类构造方法优先调用(隐式调用)

显式调用super(参数列表)

 

方法重写(多态的一种表现形式)

子类可以通过方法重写来隐藏继承父类的方法

如果子类想使用被隐藏的方法或属性,必须使用关键字super

Super主要应用在以下两个地方:

1--子类构造方法中显式调用父类的构造方法(位于第一行)super([参数])

2--子类中显式调用被隐藏的父类方法

例子:

publicclassPerson{

protectedStringname;//protected受保护成员用于子类继承

protectedintage;

publicPerson(){

System.out.println("执行父类无参构造函数");

}

publicPerson(Stringname,intage){

this.name=name;

this.age=age;

System.out.println("执行父类无参构造函数");

}

/*

*父类私有的方法子类不能继承

*/

privatevoidshow(){

System.out.println("父类私有的方法");

}

/*

*父类受保护的方法子类可以继承

*/

protectedvoiddoSomething(){

System.out.println(this.getClass().getSimpleName()+

"中受保护的方法doSomething()");

}

protectedvoidsaySomething(){

System.out.println("Person类中受保护的方法saySomething()");

}

/*

*重写Object的toString()

*/

publicStringtoString(){

returnString.format("name:

%sage:

%d%n",name,age);

}

}

publicclassStudentextendsPerson{

privateStringschool;

privatefloatscore;

publicStudent(){

super();//显式调用父类的构造函数必须位于第一行

System.out.println("执行子类无参构造函数");

}

publicStudent(Stringname,intage,Stringschool,floatscore){

super(name,age);

this.school=school;

this.score=score;

System.out.println("执行子类有参构造函数");

}

/*

*方法重写注意访问级别不能比父类的低

*/

publicvoiddoSomething(){

System.out.println(this.getClass().getSimpleName()+

"重写了父类的doSomething()");

}

publicStringtoString(){

Stringinfo=super.toString();//显式调用父类的方法

returninfo+String.format("school:

%sscore:

%.2f",school,score);

}

}

publicclassTeacherextendsPerson{

privateStringposition;//职位

privatefloatsalary;//薪水

publicTeacher(Stringname,intage,Stringposition,floatsalary){

super(name,age);

this.position=position;

this.salary=salary;

System.out.println("执行子类有参构造函数");

}

/*

方法重写(多态的一种表现形式)

子类可以通过方法重写来隐藏继承父类的方法

如果子类想使用被隐藏的方法或属性,必须使用关键字super

*注意:

访问级别不能比父类的低

*/

protectedvoiddoSomething(){

System.out.println("访问父类的方法:

");

super.doSomething();//显式调用父类的方法

System.out.println("访问父类的成员变量name:

"+super.name);

System.out.println("Teacher重写了父类:

的doSomething()");

}

/*

重写Person的toString()

*/

publicStringtoString(){

Stringinfo=super.toString();

returninfo+String.format("position:

%ssalary:

%.2f%n",position,salary);

}

}

publicclassTestExtend{

publicstaticvoidmain(String[]args){

Studentstudent=newStudent("桃花岛主",18,"后街大学",99);

System.out.println(student);

student.doSomething();//调用重写后的方法

student.saySomething();//子类没有则调用父类的

System.out.println("**************************");

/*

多态:

多态性是指允许不同类的对象对同一消息做出响应

*/

//声明父类的引用指向子类的对象实例

Personperson=newStudent("西门吹雪",28,"后街小学",66);

person.doSomething();//子类有这个方法则执行子类的

person.saySomething();//子类没有这个方法则执行父类的

person=newTeacher("东方不败",68,"后街中学",88);

person.doSomething();

}

}

 

多态:

1.不必为每个子类编写功能调用,

只需要对共有的功能在基类进行处理,

提高程序的可复用性

2.子类的功能可以被父类调用(向后兼容),

提高程序的可扩展性和可维护性

 

classFather{

publicvoidfun1(){

System.out.println("Fatherfun1()");

}

//向后兼容

publicvoidfun2(){

System.out.println("fun2可以调用以后子类重写后的fun1");

fun1();

}

}

classSonextendsFather{

publicvoidfun1(){

System.out.println("Sonfun1()");

}

publicvoidfun3(){

System.out.println("Sonfun3()");

}

}

classDaughterextendsFather{

publicvoidfun1(){

System.out.println("Duaghterfun1()");

}

publicvoidfun4(){

System.out.println("Duaghterfun3()");

}

}

publicclassTestManyModality{

//允许不同类的对象对同一消息做出不同的响应

publicstaticvoidcall(Fatherobj){

obj.fun2();

//Sonson=(Son)obj;//直接这么使用存在强制转换的危险

if(objinstanceofSon){

((Son)obj).fun3();

}

elseif(objinstanceofDaughter){

((Daughter)obj).fun4();

}

}

publicstaticvoidmain(String[]args){

Sonson=newSon();

call(son);

}

}

 

final关键字

可以修饰类变量方法

修饰类表示此类不能被继承

修饰变量表示为常量不能被更改

修饰方法表示不能被重写

 

作业:

1.编写一个java类,实现统计创建对象个数的功能

2.设计一个不能被继承的类

3.设计教学管理系统中需要的Student,Course(课程),Team(班级)类

建立测试类,创建学生对象后,获取学生所学课程和所在的班级

4.设计一个Computer类实现加、减、乘、除的方法

设计一个SubComputer类,扩展功能有取余、求绝对值、求平方和立方

编写测试类

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

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

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