![1167156-20181130145245050-1541527195.png](https://i-blog.csdnimg.cn/blog_migrate/36b9a6a930380e991e37c0820608f7d0.png)
![1167156-20181130145245865-1212615690.png](https://i-blog.csdnimg.cn/blog_migrate/cdf2313f075b093ed95811ce8890fc31.png)
![1167156-20181130145246393-336811972.png](https://i-blog.csdnimg.cn/blog_migrate/7ec9d1260d6dbc4c45175136e151ce67.png)
![1167156-20181130145246995-712663231.png](https://i-blog.csdnimg.cn/blog_migrate/04fe24bb4d3f5f2ed27a7569769d9c87.png)
![1167156-20181130145247373-151620418.png](https://i-blog.csdnimg.cn/blog_migrate/403c08df233f26f0345af32d3375ea8b.png)
![1167156-20181130145247655-1535716595.png](https://i-blog.csdnimg.cn/blog_migrate/98854c19f8d8012f7bea3c566b654005.png)
![1167156-20181130145247989-1106938053.png](https://i-blog.csdnimg.cn/blog_migrate/20d50ba7827cb95ef5e9f90ccec80732.png)
![1167156-20181130145248687-1107106327.png](https://i-blog.csdnimg.cn/blog_migrate/36dc8ddba6d08df10bc9c5cc1d82bc91.png)
![1167156-20181130145249212-897757125.png](https://i-blog.csdnimg.cn/blog_migrate/614006d35ebc228cc358522d4283afaf.png)
![1167156-20181130145249589-729433737.png](https://i-blog.csdnimg.cn/blog_migrate/4760c45253bbae8984eebdb37a301bf4.png)
![1167156-20181130145249884-68577241.png](https://i-blog.csdnimg.cn/blog_migrate/6debb8efaf276e97fdc0d366b4b1a3b2.png)
![1167156-20181130145250328-102784970.png](https://i-blog.csdnimg.cn/blog_migrate/9dc3eeb2a5e9d07a1f9012d041b1befc.png)
![1167156-20181130145250937-839660179.png](https://i-blog.csdnimg.cn/blog_migrate/752948f6d08ae69849a48241cd70eeed.png)
![1167156-20181130145251336-556560754.png](https://i-blog.csdnimg.cn/blog_migrate/6420841156cbafa3315ecc6263e81a96.png)
![1167156-20181130145251970-1427402845.png](https://i-blog.csdnimg.cn/blog_migrate/15192fd3429eb0462defe8ba2d1f0fc3.png)
![1167156-20181130145253863-1030929915.png](https://i-blog.csdnimg.cn/blog_migrate/33fbae3c6d22fc784a55f035eae4a1b5.png)
![1167156-20181130145255378-1997950733.png](https://i-blog.csdnimg.cn/blog_migrate/6b51043bfee35dcf81fa5923196184fc.png)
![1167156-20181130145255687-2059598437.png](https://i-blog.csdnimg.cn/blog_migrate/8fc8400d4f195364da524b473a1b0a58.png)
![1167156-20181130145256135-405774977.png](https://i-blog.csdnimg.cn/blog_migrate/65c0b6e0803b3cd815ff23fefad1c0f5.png)
![1167156-20181130145256748-983616152.png](https://i-blog.csdnimg.cn/blog_migrate/b855f82d2185e638fb459e4e10d494c8.png)
![1167156-20181130145257414-778700200.png](https://i-blog.csdnimg.cn/blog_migrate/b454420f065e997821d4b09b9e8f4e83.png)
![1167156-20181130145257954-1588074650.png](https://i-blog.csdnimg.cn/blog_migrate/7b06939868fa690ec9253895ffa8a4f2.png)
//类变量的程序演示[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);
}
}
![1167156-20181130145304788-215713716.png](https://i-blog.csdnimg.cn/blog_migrate/736388788cc83dc70ce5ef480d6ad0c2.png)
-------------------------------------------------------------------------------
什么是类方法,为什么有类方法?
类方法是属于所有对象实例的,其形式如下:
访问修饰符 static 数据返回类型 方法名(){}
注意:类方法中不能访问非静态变量(类变量)。
使用:类名.类方法名 或者 对象名.类方法名
*重点*static静态的方法可以访问static静态变量,不能访问非静态变量(类变量)
非静态方法可以访问非静态变量(类变量)同时也可以访问static静态变量。
x
//统计总学费的程序代码,加深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;
}
}
![1167156-20181130145305184-164903565.png](https://i-blog.csdnimg.cn/blog_migrate/90b7ce344cada485d6e4867ac69d1ca1.png)
类变量小结
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;
}
}
![1167156-20181130145305765-1513797245.png](https://i-blog.csdnimg.cn/blog_migrate/6ec65e06ca8e81c77074bf4f29f530f7.png)
封装--访问控制修饰符
java提供四种访问控制修饰符号控制方法和变量的访问权限:
1、公开级别:用public修饰,对外公开
2、受保护级别:用protected修饰,对子类和同一个包中的类公开
3、默认级别:没有修饰符号,向同一个包的类公开
4、私有级别:用private修饰,只有类本身可以访问,不对外公开
4种访问级别的访问范围
访问级别
访问控制修饰符
同类
同包
子类
不同包
公 开
Public
√
√
√
√
受保护
Protected
√
√
√
╳
默 认
没有修饰符
√
√
╳
╳
私 有
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 类名{ →
} 成员方法; 构造方法; 成员变量;
} 成员方法; 构造方法;
} 成员方法;
}