一、什么是类和对象
* 类是模子,确定对象将会拥有的特征(属性)和方法
* 类的特点:
* 类是对象的类型
* 具有相同属性和方法的一组对象的集合
* 对象的属性
* 属性-对象具有的各种特征
* 每个对象的每个属性都有用的特定值
* 对象的方法
* 方法-对象执行的操作(能干什么)
* 类和对象的关系
* 类是抽象的概念,仅仅是模板
* 1、类的重要性:所有Java程序都已类Class为组织单元
* 2、什么是类
* 类是模子,确定对象将会拥有的特征(属性)和方法
* 3、类的组成:属性和方法
* 4、定义一个类的步骤
* a、定义类名 public class 类名{
* b、编写类的属性 //定义属性部分
* 属性1的类型
* c、编写类的方法 //定义方法部分
* 方法1
*
* 1、成员变量
* 在类中定义,用来描述对象将要有什么
* 2、局部变量
* 在类的方法中定义,在方法中临时保存数据
* 局部变量:定义在方法内部->只能在当前方法使用
* 成员变量:本类方法,其他类的方法->使用
* 区别:
* 1)、作用域不同
* 局部变量的作用域仅限于定义它的方法
* 成员变量的作用域在整个类内部都是可见的。
* 2)、初始值不同
* java会给成员变量一个初始值
* 不会给局部变量初始值
* 3)、在同一个方法中,不允许有同名局部变量
* 在不同的方法中,可以有同名局部变量
* 4)、两类变量同名时,局部变量具有更高的优先级(就近原则)
1.使用new+构造方法 创建一个新的对象
2.构造方法是定义在Java类中的一个用来初始化对象的方法
构造方法与类名同名,且没有返回值
构造方法的语句格式
public 构造方法名([可以指定参数]){
//初始化代码
没有返回值类型 方法名与类名相同
}
* 5.没有指定构造方法时,系统会自动添加无参构造方法
* 6.当有指定构造方法,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法
* 7.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
* 类是模子,确定对象将会拥有的特征(属性)和方法
* 类的特点:
* 类是对象的类型
* 具有相同属性和方法的一组对象的集合
* 对象的属性
* 属性-对象具有的各种特征
* 每个对象的每个属性都有用的特定值
* 对象的方法
* 方法-对象执行的操作(能干什么)
* 类和对象的关系
* 类是抽象的概念,仅仅是模板
* 对象是一个你能够看得到,摸得着的具体实体
* 1、类的重要性:所有Java程序都已类Class为组织单元
* 2、什么是类
* 类是模子,确定对象将会拥有的特征(属性)和方法
* 3、类的组成:属性和方法
* 4、定义一个类的步骤
* a、定义类名 public class 类名{
* b、编写类的属性 //定义属性部分
* 属性1的类型
* c、编写类的方法 //定义方法部分
* 方法1
*/
//1.定义一个类
public class ClassAndObject {
//2.属性(成员方法)有什么
float screen;
float cpu;
float mem;
//3.方法 干什么
void call(){
System.out.println("Telphone有打电话的功能!");
}
void sendMessage(){
System.out.println("screen:"+screen+" cpu:"+cpu+" mem:"+mem+" Telphpne有发短信的功能!");
}
/**
* Java对象
* 使用对象的步骤
* 1、创建对象:
* 类名 对象名 = new 类名();
* ClassAndObjec phone = new ClassAndObject();
* 2、适用对象
* 引用对象的属性:对象名.属性
* phone.screen = 5;//给screen属性赋值5
*/
public static void main(String args[]){
//
ClassAndObject phone = new ClassAndObject();
phone.call();
phone.sendMessage();
//1.给实例变量赋值
phone.screen = 5.0f;
phone.cpu = 1.4f;
phone.mem = 2.0f;
//2.调用对象的方法
phone.sendMessage();
}
}
三、成员变量和局部变量*
* 1、成员变量
* 在类中定义,用来描述对象将要有什么
* 2、局部变量
* 在类的方法中定义,在方法中临时保存数据
* 局部变量:定义在方法内部->只能在当前方法使用
* 成员变量:本类方法,其他类的方法->使用
* 区别:
* 1)、作用域不同
* 局部变量的作用域仅限于定义它的方法
* 成员变量的作用域在整个类内部都是可见的。
* 2)、初始值不同
* java会给成员变量一个初始值
* 不会给局部变量初始值
* 3)、在同一个方法中,不允许有同名局部变量
* 在不同的方法中,可以有同名局部变量
* 4)、两类变量同名时,局部变量具有更高的优先级(就近原则)
int var;//成员变量
void Test(){
int localVar = 10;//局部变量
System.out.println("var:"+var);
System.out.println("localVar"+localVar);
}
void Test1(){
//System.out.println("localVar"+localVar);
}
public static void main(String args[]){
Variable var = new Variable();
var.Test();
}
四、构造方法1.使用new+构造方法 创建一个新的对象
2.构造方法是定义在Java类中的一个用来初始化对象的方法
构造方法与类名同名,且没有返回值
构造方法的语句格式
public 构造方法名([可以指定参数]){
//初始化代码
没有返回值类型 方法名与类名相同
}
//main:
public static void main(String args[]){
//通过无参的构造方法可以创建对象
ConstructionMethod phone = new ConstructionMethod();
//通过有参的构造方法也可以创建对象,并给对象中的实例变量赋初值
ConstructionMethod phone2 = new ConstructionMethod(5.0f, 1.4f, 2.0f);
}
//无参构造方法:
public ConstructionMethod(){
System.out.println("无参构造方法被执行了");
}
//有参构造方法:
public ConstructionMethod(float newScreen,float newCpu,float newMem){
screen = newScreen;
cpu = newCpu;
mem = newMem;
System.out.println("有参的构造方法被执行了!");
}
* 5.没有指定构造方法时,系统会自动添加无参构造方法
* 6.当有指定构造方法,无论是有参、无参的构造方法,系统都不会自动添加无参的构造方法
* 7.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
* 8.构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值
public class StaticVariable {
//static修饰的变量为静态变量,所有类的对象共享hobby
static String hobby = "原本imooc";
//使用static关键字声明静态方法
public static void print(){
System.out.println("静态方法");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 静态变量:
* Java中被static修饰的成员成为静态成员或类成员。它属于整个类所有
* 静态成员可以使用类名直接访问,也可以使用对象名进行访问
* 使用static可以修饰变量、方法和代码块
*/
//静态变量可以直接使用类名来访问,无需创建类的对象
System.out.println(StaticVariable.hobby);
//创建类的对象
StaticVariable svar = new StaticVariable();
System.out.println(svar.hobby);
//使用对象名的形式修改静态变量
svar.hobby = "已修改hello";
//再次使用类名访问静态变量,值已被修改
System.out.println(svar.hobby);
/**
* 静态方法:
* 直接使用类名调用静态方法
* 也可以通过对象名调用,当然推荐使用类名调用的方式
*/
//类名调用静态方法
StaticVariable.print();
//对象名调用
StaticVariable svar_2 = new StaticVariable();
svar_2.print();
}
}
public class StaticSet {
/**
*
* Java中的Static使用静态初始化块
* 通过初始化块进行数据赋值
* 类的声明中,可以包含多个初始化块,当创建类的实例时,就回依次执行这些代码块
* 静态初始化块(使用static修饰初始化块)
* 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
* 静态初始化块先执行——>普通初始化块-->构造方法
*/
int name1;
int name2;//定义一个成员变量
static int name3;
public StaticSet(){
//通过初始化块为成员变量赋值,构造方法
{
name1 = 91;
System.out.println("通过构造方法为变量name1赋值。");
}
}
//初始化块
{
name2 = 92;
System.out.println("通过初始化块为变量name2赋值");
}
static{//静态初始化块
name3 = 93;
System.out.println("通过静态初始块为静态变量name3赋值");
}
public static void main(String args[]){
StaticSet sSet = new StaticSet();
System.out.println("name1:"+sSet.name1);
System.out.println("name2:"+sSet.name2);
System.out.println("name3:"+name3);
StaticSet sSet2 = new StaticSet();
}