业余学做衣服上哪个网站,wordpress仿豆瓣,南京seo排名,中国城乡住房建设厅官网1.类与对象的定义 类是一种抽象的数据类型#xff0c;它描述了一类对象的行为和状态。例如#xff0c;我们可以定义一个名为“Dog”的类#xff0c;它描述了狗这类动物的一般特性#xff0c;如颜色、品种等状态#xff0c;以及跑、叫等行为。 对象则是类的实例#xff0c…1.类与对象的定义 类是一种抽象的数据类型它描述了一类对象的行为和状态。例如我们可以定义一个名为“Dog”的类它描述了狗这类动物的一般特性如颜色、品种等状态以及跑、叫等行为。 对象则是类的实例也即具体化代表了类定义的实体。比如一条具体的狗可以被看作是“Dog”这个类的一个对象。它拥有该类中定义的各种属性如颜色、名字、品种等和方法如跑、叫等。因此可以说对象是类的实现而类则是对象的定义。 2.类与类的实例化(对象) 语法: // 创建类
class class_name{
field;//成员属性
method;//成员方法
}
// 实例化对象
class_name 对象名 new class_name(); 其中class为类的关键字,classname是类名,{}中的就是方法主体,类中变量称之为类的成员变量,方法称之为成员方法 举例 class Person {public int age;//成员属性 实例变量public String name;public String sex;public void eat() {//成员方法System.out.println(吃饭!);}
public void sleep() {System.out.println(睡觉!);}
} 类的实例化 public class Main{public static void main(String[] args) {Person person new Person();//通过new实例化对象person.eat();//成员方法调用需要通过对象的引用调用person.sleep();//产生对象 实例化对象Person person2 new Person();Person person3 new Person();}
} 输出结果为 吃饭! 睡觉! 3.类的成员 类的成员可以包含以下字段、方法、代码块、内部类和接口等,本篇为基础篇,介绍前三个. 3.1字段/属性/成员变量(用来描述一个类中有哪些数据) 举例: class Person {public String name; // 字段public int age;
}
class Test {public static void main(String[] args) {Person person new Person();System.out.println(person.name);System.out.println(person.age);}
}// 执行结果
null
0 由于name和age是全局变量,所以打印出初始值 注: 使用 . 访问对象的字段. 访问 既包含读, 也包含写. 对于一个对象的字段如果没有显式设置初始值, 那么会被设置一个默认的初值 默认值规则
对于各种数字类型, 默认值为 0.
对于 boolean 类型, 默认值为 false.
对于引用类型(String, Array, 以及自定制类), 默认值为 null 我们不用默认值,也可以就地初始化,此时实例化对象时就有一个初值. class Person {public String name 张三;public int age 18;
} 3.2 方法(描述一个对象的行为) 举例如下: class Person {public int age 18;public String name 张三;public void show() {System.out.println(我叫 name , 今年 age 岁);}
}
class Test {public static void main(String[] args) {Person person new Person();person.show();}
}//结果
我叫张三, 今年18岁 3.3 static 关键字 可以用来 1.修饰属性 2.修饰方法 3.代码块 4.修饰类(暂时不谈) 1.修饰属性 修饰属性就是同一个类的不同实例共用同一个静态属性.就是我多个对象操作的是一个属性. 举例: class TestDemo{public int a;public static int count;
}
public class Main{public static void main(String[] args) {TestDemo t1 new TestDemo();t1.a;TestDemo.count;System.out.println(t1.a);System.out.println(TestDemo.count);System.out.println();TestDemo t2 new TestDemo();t2.a;TestDemo.count;System.out.println(t2.a);System.out.println(TestDemo.count);}
}输出结果
1
11
2 内存结构 2.修饰方法 静态方法属于类而不属于类的对象。 可以直接调用静态方法而无需创建类的实例。 静态方法可以访问静态数据成员并可以更改静态数据成员的值 注:随着类的加载而加载 举例: class TestDemo{public int a;public static int count;public static void change() {count 100;//a 10; error 不可以访问非静态数据成员}
}public class Main{public static void main(String[] args) {TestDemo.change()//无需创建实例对象 就可以调用System.out.println(TestDemo.count);}
} 注:this和super不能在静态方法中使用,因为静态方法跟随类的加载而加载,this和super作用于对象,产生时间晚于static方法的加载. 4.封装 4.1 private实现封装 被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用. 被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用 假如我在类中使用private修饰一个成员变量,此时外界创建实例不能对此变量进行获取和修改,这就实现了封装,我不想将这一条属性让外界知道. 后面假如我又想修改或者查看了,这里我们就引出了getter()和setter()方法 class Person {private String name 张三;private int age 18;public void show() {System.out.println(我叫 name , 今年 age 岁);}
}
class Test {public static void main(String[] args) {Person person new Person();person.age 20;person.show();}
}
// 编译出错
Test.java:13: 错误: age不可以在Person中访问private
person.age 20;
^
1 个错误 下面我们给出get和set方法的使用实例 class Person {private String name;//实例成员变量private int age;public void setName(String name){//name name;//不能这样写this.name name;//this引用表示调用该方法的对象}public String getName(){return name;}public void show(){System.out.println(name: name age: age);}
}public static void main(String[] args) {Person person new Person();person.setName(caocao);String name person.getName();System.out.println(name);person.show();
}
// 运行结果
caocao
name: caocao age: 0 getName 即为 getter 方法, 表示获取这个成员的值. setName 即为 setter 方法, 表示设置这个成员的值快捷键 altinsert 5.构造方法 下面介绍构造方法(一种特殊的方法).使用关键字new实例化新对象时会被自动调用, 用于完成初始化操作 new 关键字的执行流程 1.为对象分配内存空间 2.调用对象的构造方法 构造方法的语法 1.方法名称必须与类名称相同 2.构造方法没有返回值类型声明 3.每一个类中一定至少存在一个构造方法没有明确定义则系统自动生成一个无参构造注:如果指明了构造方法,编译器将不提供空参的构造方法 this关键字 this表示当前对象引用(注意不是当前对象). 可以借助 this 来访问对象的字段和方法 这里构造方法中可以调用其他的构造方法,但是必须放在构造方法的第一行,原因是先创建对象才能调用方法. 举例: class Person {private String name;//实例成员变量private int age;private String sex;//默认构造函数 构造对象public Person() {//this调用构造函数this(bit, 12, man);//必须放在第一行进行显示}//这两个构造函数之间的关系为重载。public Person(String name,int age,String sex) {this.name name;this.age age;this.sex sex;}public void show() {System.out.println(name: name age: age sex: sex);}
}
public class Main{public static void main(String[] args) {Person person new Person();//调用不带参数的构造函数person.show();}
}// 执行结果
name: bit age: 12 sex: man 6.代码块 代码块分为四种 普通代码块 构造块 静态块 同步代码块(暂时不谈) 1.普通代码块(很少用)不影响代码的执行 public class Main{public static void main(String[] args) {{ //直接使用{}定义普通方法块int x 10 ;System.out.println(x1 x);}int x 100 ;System.out.println(x2 x);}
}// 执行结果
x1 10
x2 1002.构造代码块 构造块定义在类中的代码块(不加修饰符)。也叫实例代码块。构造代码块一般用于初始化实例成员变量 举例: class Person{private String name;//实例成员变量private int age;private String sex;public Person() {System.out.println(I am Person init()!);}//实例代码块{this.name bit;this.age 12;this.sex man;System.out.println(I am instance init()!);}public void show(){System.out.println(name: name age: age sex: sex);}
}public class Main {public static void main(String[] args) {Person p1 new Person();p1.show();}
}
// 运行结果
I am instance init()!
I am Person init()!
name: bit age: 12 sex: man 直接显示初始化和用实例代码块初始化的区别? 一个是造出来这个对象的默认值,一个则是初始化之后用这个对象进行赋值的. 3.静态代码块 随着类的加载而执行(先于构造方法),只能访问静态成员,一般用于给静态成员初始化举例如下 class Person{private String name;//实例成员变量private int age;private String sex;private static int count 0;//静态成员变量 由类共享数据 方法区public Person(){System.out.println(I am Person init()!);}//实例代码块{this.name bit;this.age 12;this.sex man;System.out.println(I am instance init()!);}//静态代码块static {count 10;//只能访问静态数据成员System.out.println(I am static init()!);}public void show(){System.out.println(name: name age: age sex: sex);}
}public class Main {public static void main(String[] args) {Person p1 new Person();Person p2 new Person();//静态代码块是否还会被执行会}
}