package com.lagou.task08; //package 包(文件夹),是关键字 //Animal在上面的,模块二代码.com.lagou.task08包里 //右键点Show in Explorer打开当前文件位置 //Refactor重构 -> Rename重命名 // public class Animal { private String name; private String color; //右键Generate 里面可以自动生成代码,如get和set和构造方法 public Animal() { } public Animal(String name, String color) { setName(name); setColor(color); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public void show(){ //sout 回车 生成打印语句 System.out.println("名字:" + getName() + ",颜色:" + getColor()); } }
package com.lagou.task08; public class Dog extends Animal { private int tooth; public Dog() { super();//表示调用父类的无参构造方法 } public Dog(String name, String color, int tooth) { super(name, color); //表示调用父类的有参构造方法 //idea会自动保存,不用时刻ctrl s了 setTooth(tooth); } public int getTooth() { return tooth; } public void setTooth(int tooth) { if(tooth > 0) { this.tooth = tooth; }else{ System.out.println("数量不合理哦"); } } @Override public void show() { super.show(); System.out.println("牙齿数量是:" + getTooth()); } }
package com.lagou.task08; public class DogTest { public static void main(String[] args) { //使用无参方式构造Dog类型的对象并打印特征 Dog d1 = new Dog(); d1.show(); //使用有参方式构造Dog类型的对象并打印特征 Dog d2 = new Dog("旺财","白色",10); d2.show(); //旺财 白色 10 } }对于继承来说 先执行父类的静态代码块,再执行子类的静态代码块 执行父类的构造块,执行父类的构造体 执行子类的构造块,执行子类的构造方法体
package com.lagou.task08; public class SuperTest { { System.out.println("SuperTest类中的构造块!"); // (2) c } static { System.out.println("SuperTest类中的静态代码块!"); // (1) a } public SuperTest() { System.out.println("SuperTest类中的构造方法体!"); // (3) d } public static void main(String[] args) { // 使用无参方式构造对象 SuperTest st = new SuperTest(); } }
package com.lagou.task08; // 导入java目录中lang目录中System类中的静态成员out 很少使用 import static java.lang.System.out; public class SubSuperTest extends SuperTest { { System.out.println("==========SubSuperTest类中的构造块!"); // (2) e } static { System.out.println("==========SubSuperTest类中的静态代码块!"); // (1) b } public SubSuperTest() { //System.out.println("==========SubSuperTest类中的构造方法体!"); // (3) f out.println("==========SubSuperTest类中的构造方法体!"); } public static void main(String[] args) { // 使用无参方式构造子类的对象 SubSuperTest sst = new SubSuperTest(); } }常用的访问控制符------------------------------ public修饰的成员可以在任意位置使用 private修饰的成员只能在本类内部使用 通常情况下,成员方法都使用public关键字修饰,成员变量都使用private关键字修饰 package语句的由来------------------------------ 在idea设置setting里的Build里面的compiler里可以设置idea自动编译,勾选Bulid开头的,可以设置自动编译 存放的编译的字节码文件在idea工作区间的out文件夹里 定义类需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题 这会给组件复用以及团队间的合作造成很大的麻烦 在Java语言中,用包(package)的概念来解决命名冲突问题 包的定义------------------------------ 在定义一个类时,除了定义类的名称一般还要指定一个包名,格式如下: package 包名 package 包名1.包名2.包名3…包名n; 为了实现项目管理,解决命名冲突问题以及权限控制的效果 定义包的规范------------------------------ 如果各个公司或开发组织的程序员都随心所欲的命名包名的话,仍然不能从根本上解决命名冲突的问题 因此,在指定包名的时候应该按照一定的规范 如:org.apache.commons.lang.StringUtil 其中StringUtils是类名,而org.apache.commons.lang是多层包名 其含义如下:org.apache表示公司或组织的信息(是这个公司(或组织)的域名的反写) common表示项目的名称信息 lang表示模块的名称信息 包的导入------------------------------ 使用import关键字导入类 使用import关键字导入静态成员,从Java5.0开始支持 final本意为"最终的,不可改变的",可以修饰类,成员方法以及成员变量 final关键字修饰类体现在该类不能被继承 主要用于防止滥用继承,如:java.lang.String类等 final关键字修饰成员变量方法体现在该方法不能被重写但可以被继承 主要用于防止不经意间造成的重写,如:java.text.Dateformat类中format方法等
package com.lagou.task08; // ctrl+shift+/ 进行选中多行注释,再来一次取 // ctrl+/ 进行选中单行注释,再来一次取消 public class FinalClass { public void show() { System.out.println("FinalClass类中的show方法"); } }
package com.lagou.task08; public class SubFinalClass extends FinalClass { @Override public void show() { super.show(); } public static void main(String[] args) { SubFinalClass sfc = new SubFinalClass(); sfc.show(); } }final关键字修饰成员变量体现在该变量必须初始化且不能改变 主要用于防止不经意间造成改变,如:java.lang.Thread类中MAX_PRIORITY等
package com.lagou.task08; public class FinalMemberTest { // private final int cnt = 1 ; //在声明变量的同时,给初始值,就叫显示初始化 private final int cnt; public FinalMemberTest(){ cnt = 3; //构造方法体中进行初始化 //之所以可以在构造里初始,因为new新建时,构造会先执行 } public static void main(String[] args) { //声明FinalMemberTest类型的引用指向该类的对象 FinalMemberTest fmt = new FinalMemberTest(); //打印成员变量的数值 System.out.println("fmt.cnt:" + fmt.cnt); } }常量的概念------------------------------ 在以后开发中很少单独使用final关键字来修饰成员变量,通常使用public static final关键字共同修饰成员变量来表达常量的含义 常量的命名规范要求所有字母都要大写,不同的单词之间采用下划线连接 如:public static final double PI = 3.14;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)