某高校门户网站开发案例,五年级下册数学优化设计答案,建设银行河北分行网站,wordpress 页面顺序1. final关键字 final概述 学习了继承后#xff0c;我们知道#xff0c;子类可以在父类的基础上改写父类内容#xff0c;比如#xff0c;方法重写。那么我们能不能随意的继承API中提供的类#xff0c;改写其内容呢#xff1f;显然这是不合适的。为了避免这种随意改写的情…1. final关键字 final概述 学习了继承后我们知道子类可以在父类的基础上改写父类内容比如方法重写。那么我们能不能随意的继承API中提供的类改写其内容呢显然这是不合适的。为了避免这种随意改写的情况Java提供了final关键字用于修饰不可改变内容。 final特点 final不可改变。可以用于修饰类、方法和变量。 类被修饰的类不能被继承。 方法被修饰的方法不能被重写。 变量被修饰的变量不能被重新赋值变成了常量 final的使用
修饰类
格式
//final修饰类
public final class Fu {public void show(){System.out.println(fu..show..);}
}//子类不能继承final所修饰的父类
public class Zi extends Fu {
} 查询API发现像 public final class String 、 public final class Math 、 public final class Scanner 等都是被final修饰的目的就是供我们使用而不让我们所以改变其内容 修饰方法
public class Fu {public final void show(){System.out.println(fu..show..);}
}public class Zi extends Fu {//子类继承父类中的final修饰的方法public void show(){System.out.println(fu..show..);}
}
修饰变量
public class Fu {final int num 10;public void show(){System.out.println(fu..show..);}
}public class Test {public static void main(String[] args) {Fu f new Fu();System.out.println(f.num);//10// f.num 20; final修饰的变量变成常量不能进行修改}
}
2. 包的定义及规范 分包思想 如果将所有的类文件都放在同一个包下不利于管理和后期维护 所以对于不同功能的类文件可以放在不同的包下进行管理。 什么是包 包本质上就是文件夹 创建包单级包、多级包 多级包之间使用 . 进行分割 多级包的定义规范公司的网站地址翻转(去掉www) 包的命名规则字母都是小写
www.baidu.com -- com.baidu.模块功能的名称
com.baidu.当前的项目的名称.模块功能的名称
好处
1.写的时候类名重复了不同包下的类名可以重复
2.对模块做一个很好的划分,包里面放的是类
day01,day02,day03,day04
开发阶段
dao
service
entity
unil 包的定义 使用package关键字定义包 格式 package 包名; 如果是多级包中间用.进行分割 包的注意事项 package语句必须是程序的第一条可执行的代码 package语句在一个java文件中只能有一个 如果没有package默认表示无包名 类与类之间的访问 同一个包下的访问,不需要导包直接使用即可. 不同包下的访问,import 导包后访问;import java.util.Scanner;导入输入类; 通过全类名包名 类名访问 注意import 、package 、class 三个关键字的摆放位置存在顺序关系 package 必须是程序的第一条可执行的代码 import 需要写在 package 下面 class 需要在 import 下面 3. 权限修饰符 在Java中提供了四种访问权限使用不同的访问权限修饰符修饰时被修饰的内容会有不同的访问权限。 public 公共的 protected受保护的 default 默认的 private 私有的 不同权限的访问范围 同一个包下访问
package cn.yanqi.soft1;public class Father {public void publicShow1(){System.out.println(father-public-show1 );}private void privateShow2(){System.out.println(father-private-show2 );}protected void protectedShow3(){System.out.println(father-protected-show3 );}void show4(){System.out.println(father-默认修改-show4);}public static void main(String[] args) {Father f new Father();f.publicShow1();f.privateShow2();f.protectedShow3();f.show4();}
}同一个包下子类
package cn.yanqi.soft1;/*** Auther: yanqi* Desc 同一包下子类可以访问除私有以外的所有方法*/
public class Son extends Father {public static void main(String[] args) {Father f new Father();f.publicShow1();f.protectedShow3();f.show4();Son s new Son();s.publicShow1();s.protectedShow3();s.show4();}
}
同一包下无关类
package cn.yanqi.soft1;/*** Auther: yanqi* Desc 同一包无关类可以访问除私有以外的所有方法*/
public class Test {public static void main(String[] args) {Father f new Father();f.publicShow1();f.protectedShow3();f.show4();}
}
不同包下子类
package cn.yanqi.soft2;import cn.yanqi.soft1.Father;/*** Auther: yanqi* Desc 不同包子类只能访问 public protected*/
public class Son2 extends Father {public static void main(String[] args) {Son2 s new Son2();s.publicShow1();s.protectedShow3();}
}
不同包下无关类
package cn.yanqi.soft2;import cn.yanqi.soft1.Father;/*** Auther: yanqi* Date: 11:29* Desc 不同包下的无关类只能访问 pubLic*/
public class Test2 {public static void main(String[] args) {Father f new Father();f.publicShow1();}
}
总结: 在四大权限中public是最大的权限private是最小的权限 在编写代码时如果没有特殊的考虑建议以下使用方式; 成员变量使用 private 隐藏细节。 构造方法使用 public 方便创建对象。 成员方法使用 public 方便调用方法 4. static关键字 什么是static关键字 它可以用来修饰的成员变量和成员方法被修饰的成员是属于类的而不是单单是属 于某个对象的。也就是说既然属于类就可以不靠创建对象来调用了。 static的定义和使用格式 static的特点(它可以修饰成员变量还可以修饰成员方法) A:随着类的加载而加载 回想main方法。 B:优先于对象存在 C:被类的所有对象共享 举例咱们班级的学生应该共用同一个班级编号。 其实这个特点也是在告诉我们什么时候使用静态? 如果某个成员变量是被所有对象共享的那么它就应该定义为静态的。 举例 饮水机(用静态修饰) 水杯(不能用静态修饰) D:可以通过类名调用 其实它本身也可以通过对象名调用。 推荐使用类名调用。 静态修饰的内容一般我们称其为与类相关的类成员 静态变量
public class Student {//非静态变量int num1 10;//静态变量static int num2 20;
}public class StudentDemo {public static void main(String[] args) {Student s new Student();System.out.println(s.num1);System.out.println(s.num2);//也可以用对象来调用静态变量不推荐//可以直接用类名直接调用静态变量System.out.println(Student.num2);}
}静态方法 static关键字注意事项 A:在静态方法中是没有this关键字的 如何理解呢? 静态是随着类的加载而加载this是随着对象的创建而存在。 静态比对象先存在。 B:静态方法只能访问静态的成员变量和静态的成员方法 静态方法 成员变量只能访问静态变量 成员方法只能访问静态成员方法 非静态方法 成员变量可以是静态的也可以是非静态的 成员方法可是是静态的成员方法也可以是非静态的成员方法。 简单记 静态只能访问静态。非静态可以访问静态也可以访问非静态 public class Student {//非静态变量int num1 10;//静态变量static int num2 20;//非静态方法public void show(){System.out.println(num1);System.out.println(this.num1);System.out.println(num2);//方法非静态的可以访问静态的也可以访问非静态的function();function2();}//静态方法public static void method(){//静态不能访问非静态的成员变量// System.out.println(num1);//静态中没有this// System.out.println(this.num1);//静态方法可以访问静态的成员变量System.out.println(num2);//静态不能访问非静态的// function();//静态可以访问静态的function2();}public void function(){System.out.println(function);}public static void function2(){System.out.println(function2);}
}
【注意事项】 静态方法可以直接访问类变量和静态方法。 静态方法不能直接访问普通成员变量或成员方法。反之成员方法可以直接访问类变量或静态方法。 静态方法中不能使用this关键字。 调用格式 被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员原因即多个对象均属于一个类共享使用同一个静态成员但是不建议会出现警告信息。 格式 // 访问类变量 类名.类变量名 // 调用静态方法 类名.静态方法名(参数) static总结 是随着类的加载而加载的且只加载一次。 存储于一块固定的内存区域静态区所以可以直接被类名调用。 它优先于对象存在所以可以被所有对象共享。 静态变量和成员变量的区别 所属不同 静态变量属于类所以也称为类变量 成员变量属于对象所以也称之为实例变量(对象变量)内存中位置不同 静态变量存储于 方法区的静态区 成员变量存储于堆内存中生命周期不同 静态变量随着类的加载而加载随着类的消失而消失 成员变量随着对象的创建而创建随着对象的消失而消失调用不同 静态变量可以通过类名调用也可以通过对象来调用 成员变量只能通过对象名调用 静态代码块
什么是静态代码块 定义在成员位置使用static修饰的代码块{} 位置类中方法外。 执行随着类的加载而执行且执行一次优先于main方法和构造方法的执行。 静态代码块格式 public class ClassName{ static { // 执行语句 } } 代码示例 静态代码块的作用主要是给类变量进行初始化赋值。 public class Game {static int age;static String name;//构造代码块{age 30;name 江一燕30;System.out.println(我爱你小包子构造);}//静态代码块随着类的加载而加载并且只加载一次static {age 27;name 江一燕;System.out.println(我爱你小包子static);}public static void show(){System.out.println(show);}
}
public class GameTest {//静态代码块 -- 构造代码块 -- 静态方法public static void main(String[] args) {//静态代码块 在 构造代块 之前执行//静态代码属于类优先于对象存在Game g new Game();//静态代码块会执行只执行一次//构造方法每一次都会执行Game g2 new Game();//静态方法不调用不执行Game.show();Game.show();}
}