第1关:什么是类,如何创建类

什么是类

类:类是一个模板,它描述一类对象的行为属性。 对象:对象是类的一个实例,有 属性行为

举个例子:

人是一个 "类",小明就是人的 "对象" ,女生/男生是一个类,你的女朋友/男朋友就是一个对象,这个对象的属性有:名字,性别,年龄;行为有:吃饭、睡觉、学习等。

在Java中对象的状态就是属性,行为通过方法体现,即Java中的对象一般由属性和行为组成。

怎么定义类

需要使用class,声明这个类的名字。 举例说明:

  1. class Student{
  2. //声明这个是一个学生类
  3. }

学生类中有年龄,姓名,性别属性,方法为吃饭,睡觉和学习。

 

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对象代码如下:

  1. public static void main(String[] args){
  2. Student stu = new Student();
  3. Student stu1 = new Student("张三");
  4. }

你觉得会有输出吗,如果有那么输出结果会是什么呢?如果没有那你觉得原因是什么呢?

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.javapackage 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对象  取名 f1WuMingFen f1=new WuMingFen(theMa,quantity,likeSoup);//使用两个参数的构造方法创建WuMingFen对象  取名 f2WuMingFen f2=new WuMingFen(theMa,quantity);//使用无参构造方法创建WuMingFen对象  取名 f3WuMingFen 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关:选择题(二)

                                         

Educoder/头歌JAVA实训——JAVA面向对象:类与对象相关推荐

  1. educoder头歌Web实训 web课——综合应用案例:动态焦点图页面的制作

    educoder头歌Web实训 太原理工web课--综合应用案例:拼图页面的制作[全网更新最快]_玛卡巴卡的博客-CSDN博客 第1关:动态焦点图页面的样式设计 任务描述 本关任务: 完成动态焦点图 ...

  2. educoder头歌Web实训 web课——综合应用案例:限时秒杀效果的制作

    educoder头歌Web实训 太原理工web课--综合应用案例:动态焦点图页面的制作[全网更新最快]_玛卡巴卡的博客-CSDN博客 第1关:限时秒杀效果图片渲染 [TOC] 图1如下 链接为htt ...

  3. 头歌HTML实训笔录

    头歌实训笔录 HTML前端基础 第2关 创建 - 标签 HTML前端基础 因学校Java 前端等写代码的作业都在头哥平台上操作,就记录一下每一关的代码吧.. ##第1关 创建第一个 HTML 标签 / ...

  4. 头歌Python实训答案——函数结构

    第1关:函数的参数 - 搭建函数房子的砖 编程要求 本关的编程任务是补全src/Step1/plus.py文件的代码,实现相应的功能.具体要求如下: 定义并调用一个函数,功能是对输入的列表中的数值元素 ...

  5. 头歌实践教学平台答案(Java实训作业答案)

    搜集整理了一份最新最全的头歌(EduCoder)Java实训作业答案,分享给大家.(EduCoder)是信息技术类实践教学平台.(EduCoder)涵盖了计算机.大数据.云计算.人工智能.软件工程.物 ...

  6. educoder头歌实训 web课——JavaScript语言基础:JS循环语句

    educoder头歌实训 太原理工大学web课程----JavaScript语法基础:JS运算符_玛卡巴卡的博客-CSDN博客 第1关:while类型 任务描述 质数的定义如下:大于1的自然数,且除 ...

  7. java实训手册_java实训项目用户手册

    java实训项目用户手册 1 用户手册 第 1章 引言 1.1编写目的编写本手册的主要目的是为了方便使用的用户管理系统能够更加方便使用 此系统,以及更快的掌握JDK,MySQL,MyEclipse使之 ...

  8. Java实训项目:GUI学生信息管理系统(2017)

    Java实训项目:GUI学生信息管理系统(2017) 实训目的:让学生综合运用J2SE有关知识开发[学生信息管理系统].主要涉及程序控制结构.面向对象编程.图形用户界面.Java数据库应用.MySQL ...

  9. java实训心得感想30字,java实训心得体会感想

    java实训心得体会感想 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.通过本次实训,受益很多,下面谈谈个人的心得体会.本文是java实训心得,希望对大家有帮助. java实训心得篇一 ...

最新文章

  1. 深入剖析ConcurrentHashMap(1)
  2. 面试官:BigDecimal 一定不会丢失精度吗?
  3. asp 取数据 计算_地学数据 | 地理空间数据获取方式汇总
  4. Google Closure Complier的使用
  5. market1501 data_manager.py
  6. 《大型数据库技术》MySQL数据库安装配置及基础使用
  7. linux忘记mysql密码
  8. 区块链入门实战教程—看完本文你也会开发区块链
  9. PKM2 - PKManager 基于内容的个人知识管理工具 5M 绿色免费
  10. 使用fiddler代理,手机无法上网
  11. Oracle怎样创建共享文件夹,OracleVirtualBox虚拟机如何实现文件夹共享
  12. 如何计算芯片的ESP mac 地址
  13. 账号密码忘了不要慌,教你用Python自动解密解码,轻松获取!
  14. 课堂教学实践研究之人教版九年级上册“阅读与思考”《旋转对称》
  15. PDF页面太大要如何才能缩小?
  16. 浏览器打开html不加载css样式,ie怎么加载不了css样式?
  17. java全栈系列之JavaSE-面向对象(封装详解)034
  18. CSDN 编程竞赛二十一期题解
  19. SMTP、POP3和IMAP邮件协议
  20. AOP支持spEL表达式

热门文章

  1. 数据结构与算法笔记:贪心策略之BSTBBST, Hashtable+Dictionary+Map, Priority Queue~Heap, Minium Spanning Tree
  2. 几乎每个人都听说过三皇五帝,那么三皇五帝是否存在?又是谁呢?
  3. 柯西飞行,瑞利飞行,莱维飞行,重尾分布、随机游走
  4. java 写 xml 文件 工具类_XML读写工具类
  5. 如何解决移动硬盘弹出时报错:设备正在使用中
  6. linux startx无效_startx启动图形界面失败的几个解决方法
  7. vue使用高德地图小demo(标记点,画线,3D,叠加图片图层)
  8. 划分计算机发展的四个阶段主要依据,计算机的发展划分为4个阶段,分别为什么、什么、什么和什么。...
  9. 在C ++中将二进制转换为十进制
  10. 奋斗与首付,谁更能承载生命之重?