第1关:什么是类,如何创建类
什么是类
类:类是一个模板,它描述一类对象的行为和属性。 对象:对象是类的一个实例,有 属性 和 行为 。
举个例子:
人是一个 "类",小明就是人的 "对象" ,女生/男生是一个类,你的女朋友/男朋友就是一个对象,这个对象的属性有:名字,性别,年龄;行为有:吃饭、睡觉、学习等。
在Java中对象的状态就是属性,行为通过方法体现,即Java中的对象一般由属性和行为组成。
怎么定义类
需要使用class
,声明这个类的名字。 举例说明:
class Student{
//声明这个是一个学生类
}
学生类中有年龄,姓名,性别属性,方法为吃饭,睡觉和学习。
package step1;
public class Test {
public static void main(String[] args) {
/********** Begin **********/
//创建Dog对象
Dog wuhuarou=new Dog();
//设置Dog对象的属性
wuhuarou.name="五花肉";
wuhuarou.color="棕色";
wuhuarou.variety="阿拉斯加";
//输出小狗的属性
System.out.println("名字:" + wuhuarou.name + ",毛色:" +wuhuarou.color + ",品种:" +wuhuarou.variety);
//调用方法
wuhuarou.eat();
wuhuarou.run();
/********** End **********/
}
}
//在这里定义Dog类
/********** Begin **********/
class Dog{
String name;
String color;
String variety;
void eat(){
System.out.println("啃骨头");
}
void run(){
System.out.println("叼着骨头跑");
}
}
/********** End **********/
第2关:构造方法
相关知识
为了完成本关任务,你需要掌握:1.什么是构造方法,2.如何定义和调用构造方法。
什么是构造方法
构造方法:对象被创建的时候会调用的方法,对象在被创建的时候,也就是被new
的时候,会自动调用构造方法。
举个例子:
输出:
我被调用了
怎么定义和使用构造方法
怎么定义构造方法呢?构造方法和我们之前学习的方法又有啥区别呢? 请看图:
看出区别来了吗? 好,我来总结一下,看你是否能在上图中找出相对应的代码:
接下来我在main
方法中创建Student
对象代码如下:
public static void main(String[] args){
Student stu = new Student();
Student stu1 = new Student("张三");
}
你觉得会有输出吗,如果有那么输出结果会是什么呢?如果没有那你觉得原因是什么呢?
package step2;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = sc.next();
String sex = sc.next();
/********** Begin **********/
//分别使用两种构造器来创建Person对象
Person peo=new Person();
Person p=new Person(name,sex);
/********** End **********/
}
}
//创建Person对象,并创建两种构造方法
/********** Begin **********/
class Person{
String name;
String sex;
public Person(){
System.out.println("一个人被创建了");
}
public Person(String a,String b){
name=a;
sex=b;
System.out.println("姓名:"+name+",性别:"+sex+",被创建了");
}
}
/********** End **********/
第3关:选择题(一)
第4关:This关键字
package step3;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String name = sc.next();
int age = sc.nextInt();
String sex = sc.next();
Person p = new Person(name,age,sex);
p.display();
}
}
class Person{
String name = "张三";
int age = 18;
String sex = "男";
/********** Begin **********/
public Person(String name,int age,String sex){
this(age);
this.name = name;
this.sex = sex;
}
public Person(int age){
this.age = age;
}
public void display(){
String name = "李四";
int age = 11;
String sex = "男";
System.out.println("name:" + this.name);
System.out.println("age:" + this.age);
System.out.println("sex:" + this.sex);
}
/********** End **********/
}
第5关:类与对象练习
// Test.java
package step4;
import java.util.Scanner;
import step4.WuMingFen;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String theMa = sc.next();
int quantity = sc.nextInt();
boolean likeSoup = sc.nextBoolean();
/********** Begin **********/
//使用三个参数的构造方法创建WuMingFen对象 取名 f1
WuMingFen f1=new WuMingFen(theMa,quantity,likeSoup);
//使用两个参数的构造方法创建WuMingFen对象 取名 f2
WuMingFen f2=new WuMingFen(theMa,quantity);
//使用无参构造方法创建WuMingFen对象 取名 f3
WuMingFen f3=new WuMingFen();
//分别调用三个类的 check方法
f1.check();
f2.check();
f3.check();
/********** End **********/
}
}
// WuMingFen.java
/********** Begin **********/
//在这里添加包名 step4
package step4;
//创建类 添加属性和方法
public class WuMingFen{
String theMa;
int quanlity;
boolean likeSoup;
public WuMingFen(){
this.theMa="酸辣";
this.quanlity=2;
this.likeSoup=true;
}
public WuMingFen(String a,int b){
this.theMa=a;
this.quanlity=b;
this.likeSoup=false;
}
public WuMingFen(String a,int b,boolean c){
this.theMa=a;
this.quanlity=b;
this.likeSoup=c;
}
void check(){
System.out.println("面码:"+theMa+",粉的份量:"+quanlity+"两,是否带汤:"+likeSoup);
}
}
/********** End **********/
第6关:static关键字
什么是static关键字
static
关键字我们经常接触,不过我们一直没有讨论过它到底是什么,有什么具体的作用,那static
关键字是什么呢,有啥用呢?
static
是静态的意思,是一个修饰符,就像是一个形容词,是用来形容类,变量,方法的。
static
修饰变量,这个变量就变成了静态变量,修饰方法这个方法就成了静态方法,
static
关键字方便在没有创建对象的情况下来进行调用(方法/变量)。
static关键字的作用
static
关键字你可以理解为是一个形容词,一般是用来形容类、方法、变量,代码块,还有一个作用是用来静态导包,本关我们只讨论它的三个用法。
1.修饰变量 不使用static
关键字访问对象的属性:
注意:如果一个类的成员变量被static
修饰了,那么所有该类的对象都共享这个变量。无论这个类实例化多少对象,它的静态变量只有一份拷贝 。
输出:
李四
李四
李四
2.修饰方法
用static
关键字修饰的方法叫做静态方法。静态方法我们已经用过,它有一个特点相信你已经很熟悉,那就是不需要创建对象就可以直接使用。 如:
注意:
上图中static{ }
就是一个静态代码块。
我们在main
方法中没有编写任何代码,可是运行的时候,程序还是会输出 我被调用了
,由此我们可以发现静态代码块是不需要依赖main
方法就可以独立运行的。
关于静态代码块你只需要记住一句话:在类被加载的时候运行且只运行一次。
静态代码块中变量和方法的调用也遵守我们之前所说的规则,即只能直接调用静态的属性和方法。
package step5;
public class Test {
/********** Begin **********/
static String name = "楚留香";
public static void main(String[] args) {
System.out.println("hello educoder");
System.out.println("我叫" + name);
study();
}
public static void study(){
System.out.println("我喜欢在educoder上学习java");
}
/********** End **********/
}
第7关:选择题(二)