学习java第六天:
万事万物皆对象
1. 面向对象----高内聚,低耦合
①面向对象即模拟生活中的另外一种书写方式。
②面向对象语言: c++ java
③Java 是纯面向对象语言,语法要求严格。
C#是.net平台语言
3月25日,java8问世。
2 .对象:特征+行为
描述+功能
变量+方法
属性+行为
3.定义类:类名首字母大写。
New 类名();-----------造对象
类名 a = new 类名();-------a接收新创建类的地址,是一个地址管理者
变量(描述的字符串)
属性1 属性2 属性 3
对象
a
点(·) 对象的属性和方法的访问符。
属性必须定义在类里面,方法里面定义的变量。
Eg:
class Mouse
{
//属性 方法 类 静态块 构造器
//属性格式声明
//[特殊符号] 类型 名称;
private String name; //属性
private String sex;
int age;
void run(){ //方法
System.out.println("I'm running !!!");
}
void eat(){
System.out.println("I'm eating a cat !!!");
}
public static void main(String[] args)
{
Mouse m = new Mouse(); //构造一个对象,将地址交给m
m.name = "xiaobai";
m.sex = "mu";
m.age = 3;
System.out.println("I'm"+m.name+",sex:"+m.sex+",age:"+m.age);
m.run(); //调用方法 (.)
m.eat();
}
}
4. 实例———对象
静态———类
5.Static 静态关键字
Java语言中static的三种典型用途
①Static+属性
静态成员可以直接用类名访问——类名·静态属性名(如果有访问权限的话)。
Java中没有全局变量这一说法,但是静态成员变量可以起到全局变量的作用。
②Static+方法
类名·方法名 直接调用,静态方法只能调用静态的属性和方法。
不能在静态方法中使用this关键词。
③Static块(静态块)
静态块是一种较特殊的语法,一般用于初始化静态属性。
静态块中不能访问任何非静态成员。
Eg:public class StaticBlook{
Static int a;
int b;
Static{
a=5; //正确
b=6; // 错误 b为非静态成员变量
x(); //正确
y(); //错误 y()方法不是静态方法
}
Public static void x(){
}
Public void y(){
}
}
现有模板后有对象。
实例什么时候用什么时候加载。
编译时,先加载静态成员,且静态成员只加载一次,程序关闭后才释放内存。
静态成员不能对实例(非静态)成员访问。
实例成员可以访问静态成员。
6.构造函数
①构造函数不能定义返回值类型。
②构造函数名必须与类名相同。
③构造函数无法手工调用,只有在实例化对象时由系统自动调用。
④构造函数可以重载,java会根据实例化对象时传递的参数决定调用哪一个构造函数。
⑤没有参数的构造函数称为缺省构造函数,java编译器会为类生成缺省构造函数,但如果开发者自己定义了构造函数(无论是否有参数),编译器将不会再生成缺省构造函数。
·在类的构造函数执行前,会先对属性执行初始化操作。
7.this: 当前对象
此关键字只允许用在对象或实例的方法内。
This. 表示访问
This()——转发构造器,只允许写在方法的首行。
Eg:
class Stu{
int a=1;
Stu(){
this(3); //this()——转发构造器,只能写在第一行。
System.out.println("hehe "+a);
}
Stu(int a){
// this.a=a; //this.——表示访问当前对象
System.out.println("haha "+a);
}
}
public class Student1
{
public static void main(String[] args)
{
Stu s = new Stu();
System.out.println("heihei "+s.a);
}
}
8.类的管理类——Class
Class.forName(“类名”);
Eg:
public class ClassDemo {
public static void main(String[] args) throws Exception{
Class.forName("Mouse");
}
}
9.final
final static String ADRESS;
ADRESS=”aaa”; // 变量名全部大写
final定义类表示类不可以被继承; 定义方法不可以被重写; 定义变量表示变量值不可以被改变。