静态区域块:
构造函数: public Demo3_2()
主函数:public static void main(String []args)
打印出3和4;
当类被定义的时候,和类定义的信息已经被写到代码区了
,静态区域块被自动执行。
这样的话,所有对象共享一个类方法;
java中规则:类变量原则上用类方法去访问;
静态的方法只能访问静态的变量;
非静态的方法既可以访问静态的变量也可以访问非静态的变 量;
JAVA里面的原则:尽可能把成员属性做成私有的;
构造函数;
public去访问私有的被封装的部分;
以工程或者项目的形式来管理的;
建立一个类;
Gneral-Application-Appearance-Colors and Fonts(粗体,16)
双击头菜单,改变开发窗口的大小;
Eclipse特点:当你保存的时候自动编译;
波浪线提示语法错误;根据这样去排错;
删除delete;
建立一个包,包名是小写的,不超过5层; com.xiaoming
建立两个包;
有包可以区分相同名字的类Dog;
把你生成的class字节码放在xiaoming的包里面;
rt.jar 所有的字节码文件通通被打成一个大包; java面向对象编程(2)--类变量、类方法什么是类变量?类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
如何定义类变量?定义语法: 访问修饰符 static 数据类型 变量名;
如何访问类变量? 类名.类变量名 或者 对象名.类变量名
//类变量的程序演示[Demo114.java]public class Demo114{ static int i=1; static{ //该静态区域块只被执行一次 i++; System.out.println("执行一次"); } public Demo114(){ //建立Demo114()构造函数 System.out.println("执行二次"); i++; } public static void main(String []args){ Demo114 t1=new Demo114(); //创建t1对象实例并调用Demo114函数 System.out.println(t1.i); Demo114 t2=new Demo114(); System.out.println(t2.i); } }
20
1
//类变量的程序演示[Demo114.java]
2
public class Demo114{
3
static int i=1;
4
static{
5
//该静态区域块只被执行一次
6
i++;
7
System.out.println("执行一次");
8
}
9
public Demo114(){ //建立Demo114()构造函数
10
System.out.println("执行二次");
11
i++;
12
}
13
public static void main(String []args){
14
Demo114 t1=new Demo114(); //创建t1对象实例并调用Demo114函数
15
System.out.println(t1.i);
16
17
Demo114 t2=new Demo114();
18
System.out.println(t2.i);
19
}
20
}
-------------------------------------------------------------------------------什么是类方法,为什么有类方法?类方法是属于所有对象实例的,其形式如下: 访问修饰符 static 数据返回类型 方法名(){}注意:类方法中不能访问非静态变量(类变量)。使用:类名.类方法名 或者 对象名.类方法名*重点*static静态的方法可以访问static静态变量,不能访问非静态变量(类变量) 非静态方法可以访问非静态变量(类变量)同时也可以访问static静态变量。
//统计总学费的程序代码,加深static静态的方法由静态变量的访问[Demo115.java]public class Demo115{ public static void main(String []args){ //创建一个学生 Stu stu1=new Stu(29,"aa",340); Stu stu2=new Stu(29,"aa",240); System.out.println(Stu.getTotalFee()); } } //学生类 class Stu{ int age; String name; int fee; static int totalFee; public Stu(int age,String name,int fee){ this.age=age; this.name=name; totalFee+=fee; } //返回总学费[这是一个类方法(静态方法)] //java中规则:类变量原则上用类方法去访问或操作 public static int getTotalFee(){ return totalFee; } }
x
1
//统计总学费的程序代码,加深static静态的方法由静态变量的访问[Demo115.java]
2
public class Demo115{
3
public static void main(String []args){
4
//创建一个学生
5
Stu stu1=new Stu(29,"aa",340);
6
Stu stu2=new Stu(29,"aa",240);
7
System.out.println(Stu.getTotalFee());
8
}
9
}
10
11
//学生类
12
class Stu{
13
int age;
14
String name;
15
int fee;
16
static int totalFee;
17
public Stu(int age,String name,int fee){
18
this.age=age;
19
this.name=name;
20
totalFee+=fee;
21
}
22
//返回总学费[这是一个类方法(静态方法)]
23
//java中规则:类变量原则上用类方法去访问或操作
24
public static int getTotalFee(){
25
return totalFee;
26
}
27
}
类变量小结1、什么时候需要用类变量案例[Demo115.java]:定义学生类,统计学生共交多少钱?用类变量,属于公共的属性2、类变量与实例变量区别:加上static称为类变量或静态变量,否则称为实例变量类变量是与类相关的,公共的属性实例变量属于每个对象个体的属性类变量可以通过 [类名.类变量名] 直接访问类方法小结
1、什么时候需要用类方法案例[Demo115.java]:定义学生类,统计学生共交多少钱?类方法属于与类相关的,公共的方法实例方法属于每个对象个体的方法类方法可以通过 [类名.类方法名] 直接访问
-------------------------------------------------------------------------------java面向对象编程的四大特征抽象/封装/继承/多态
抽象1、简单理解我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版)。这种研究问题的方法称为抽象。
封装--什么是封装封装就是把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
封装--访问控制修饰符电视机的开关,对音量,颜色,频道的控制是公开的,谁都可以操作,但是对机箱后盖,主机板的操作却不是公开的,一般是由专业维修人员来玩。那么java中如何实现这种类似的控制呢?不能随便查看人的年龄,工资等隐私[Demo116.java]
//封装案例[Demo116.java]public class Demo116{ public static void main(String []args){ //创建一个职员 Clerk clerk1=new Clerk("小花",24,4567.6f); System.out.println("名字是"+clerk1.name+"薪水"+clerk1.getSal()); } } //职员 class Clerk{ public String name; //private私有的,public公有的 private int age; private float salary; public Clerk(String name,int age,float sal){ this.name=name; this.age=age; this.salary=sal; } //通过一个成员方法去控制和访问私有的属性 public float getSal(){ return this.salary; } }
1
//封装案例[Demo116.java]
2
public class Demo116{
3
public static void main(String []args){
4
//创建一个职员
5
Clerk clerk1=new Clerk("小花",24,4567.6f);
6
System.out.println("名字是"+clerk1.name+"薪水"+clerk1.getSal());
7
}
8
}
9
//职员
10
class Clerk{
11
public String name;
12
//private私有的,public公有的
13
private int age;
14
private float salary;
15
16
public Clerk(String name,int age,float sal){
17
this.name=name;
18
this.age=age;
19
this.salary=sal;
20
}
21
//通过一个成员方法去控制和访问私有的属性
22
public float getSal(){
23
return this.salary;
24
}
25
}
4种访问级别的访问范围 访问级别 访问控制修饰符 同类 同包 子类 不同包 公 开 Public √ √ √ √ 受保护 Protected √ √ √ ╳ 默 认 没有修饰符 √ √ ╳ ╳ 私 有 private √ ╳ ╳ ╳
封装--访问控制修饰符java提供四种访问控制修饰符号控制方法和变量的访问权限:1、公开级别:用public修饰,对外公开2、受保护级别:用protected修饰,对子类和同一个包中的类公开3、默认级别:没有修饰符号,向同一个包的类公开4、私有级别:用private修饰,只有类本身可以访问,不对外公开
包--必要性问题的提出,请看下面的一个场景[eclipse]现在有两个程序员共同开发一个java项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaoqiang也想定义一个类也叫Dog。两个程序员为此还吵了起来,怎么办?
包--三大作用1、区分相同名字的类2、当类很多时,可以很好的管理类3、控制访问范围
包--换包命令package com.自定义名字;注意:打包命令一般放在文件开始处。
包--命名规范小写字母 比如 com.sina.shunping
包--常用的包一个包下,包含很多的类,java中常用的包有:java.lang.* 包 自动引入 java.util.* 工具包java.net.* 包 网络开发包 java.awt.* 包 窗口工具包
包--如何引入包语法:import 包;比如import java.awt.*;我们引入一个包的主要目的要使用该包下的类
定义类的改进在提出包后,我们类的定义就更加完善了:class 类名{ class 类名{ class类名{ package包名; 待定..成员变量; → 成员变量; → 成员变量; → class 类名{ →} 成员方法; 构造方法; 成员变量; } 成员方法; 构造方法; } 成员方法; }