当前位置:   article > 正文

第二章 Java面向对象-类与对象

第二章 Java面向对象-类与对象

目录

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

第2关:构造方法 

第3关:选择题(一)

任务描述

什么是成员变量

第4关:This关键字

第5关:类与对象练习

1.src/step4/ Test.java

2.包(给代码文件分类)

第6关:static关键字

第7关:选择题(二) 


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

  1. package step1;
  2. public class Test {
  3. public static void main(String[] args) {
  4. /********** Begin **********/
  5. //创建Dog对象
  6. Dog wuhuarou = new Dog();
  7. //设置Dog对象的属性
  8. wuhuarou.name = "五花肉";
  9. wuhuarou.color = "棕色";
  10. wuhuarou.variety = "阿拉斯加";
  11. //输出小狗的属性
  12. System.out.println("名字:" + wuhuarou.name + ",毛色:" + wuhuarou.color + ",品种:" + wuhuarou.variety);
  13. //调用方法
  14. wuhuarou.eat();
  15. wuhuarou.run();
  16. /********** End **********/
  17. }
  18. }
  19. //在这里定义Dog类
  20. /********** Begin **********/
  21. class Dog{
  22. String name;
  23. String color;
  24. String variety;
  25. void eat(){
  26. System.out.println("啃骨头");
  27. }
  28. void run(){
  29. System.out.println("叼着骨头跑");
  30. }
  31. }
  32. /********** End **********/

第2关:构造方法 

  1. package step2;
  2. import java.util.Scanner;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. String name = sc.next();
  7. String sex = sc.next();
  8. /********** Begin **********/
  9. //分别使用两种构造器来创建Person对象
  10. Person p = new Person();//括号别漏了
  11. System.out.println ("一个人被创建了");//println()
  12. System.out.println ("姓名:" + name +",性别:"+ sex + ",被创建了" );
  13. /********** End **********/
  14. }
  15. }
  16. //创建Person对象,并创建两种构造方法
  17. /********** Begin **********/
  18. class Person{
  19. String name;
  20. String sex;
  21. //方法一:无参构造
  22. void Person(){
  23. }
  24. //方法二:有参构造
  25. void Person(String name,String sex){
  26. this.name = name;
  27. this.sex = sex;
  28. }
  29. }
  30. /********** End **********/

第3关:选择题(一)

任务描述

本关任务:使用this关键字,设置对象的成员变量。

输出结果: 传入的name:李四age:10 student属性name:张三age:18

上述结果我们可以发现一个问题,在构造方法中nameage并没有设置成功,stu对象的name属性和age属性的值还是默认定义好的张三18

怎么解决这个问题呢?你需要学习两个知识点:

1.什么是成员变量; 2.this关键字。

什么是成员变量

成员变量就是对象的属性:



第4关:This关键字

关于this关键字,你只需要记住它就是指自身this即代表自己,this.属性访问的是自己的属性、this()访问的就是自己的无参构造方法

例1:this.属性

例2:this.属性,this()

输出: I am 张三

可以发现,如果我们把上述this.name = name改为 name = name,那么最终的结果就变成了: I am null

this()调用的是Person自己的无参构造方法,this.name访问的是Person对象自身的name,而方法参数中的name则表示方法传入的值。

  1. package step3;
  2. import java.util.Scanner;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. String name = sc.next();
  7. int age = sc.nextInt();
  8. String sex = sc.next();
  9. Person p = new Person(name,age,sex);
  10. p.display();
  11. }
  12. }
  13. class Person{
  14. String name = "张三";
  15. int age = 18;
  16. String sex = "男";
  17. /********** Begin **********/
  18. public Person(String name,int age,String sex){
  19. this(age);
  20. this.name = name;//加上this.
  21. this.sex = sex;//加上this.
  22. }
  23. public Person(int age){
  24. this.age = age;//加上this.
  25. }
  26. public void display(){
  27. //String name = "李四";
  28. //int age = 11;
  29. //String sex = "男";
  30. System.out.println("name:" + name);
  31. System.out.println("age:" + age);
  32. System.out.println("sex:" + sex);
  33. }
  34. /********** End **********/
  35. }


第5关:类与对象练习

1.src/step4/ Test.java

  1. package step4;
  2. import java.util.Scanner;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Scanner sc = new Scanner(System.in);
  6. String theMa = sc.next();
  7. int quantity = sc.nextInt();
  8. boolean likeSoup = sc.nextBoolean();
  9. /********** Begin **********/
  10. //使用三个参数的构造方法创建WuMingFen对象 取名 f1
  11. //便于简化初始化过程
  12. WuMingFen f1 = new WuMingFen(theMa, quantity, likeSoup);
  13. //使用两个参数的构造方法创建WuMingFen对象 取名 f2
  14. //重载构造方法,使得初始化过程可以多样化
  15. WuMingFen f2 = new WuMingFen(theMa,quantity);
  16. //使用无参构造方法创建WuMingFen对象 取名 f3
  17. WuMingFen f3 = new WuMingFen();
  18. f3.theMa = "酸辣";
  19. f3.quantity = 2;
  20. f3.likeSoup = true;
  21. //分别调用三个类的 check方法
  22. f1.check();
  23. f2.check();
  24. f3.check();
  25. /********** End **********/
  26. }
  27. }

2.包(给代码文件分类)

如果一个类被定义在某一个包下那么在定义类的时候需要声明包名,否则程序会报错。

 

  1. /********** Begin **********/
  2. //在这里添加包名 step4
  3. package step4;
  4. //创建类 添加属性和方法
  5. public class WuMingFen{
  6. String theMa;//属性1
  7. int quantity;//属性2
  8. boolean likeSoup;//属性3
  9. public WuMingFen(){}//方法
  10. //1
  11. public WuMingFen(String theMa,int quantity,boolean likeSoup){
  12. this.theMa = theMa;
  13. this.quantity = quantity;
  14. this.likeSoup = likeSoup;
  15. }
  16. //2
  17. public WuMingFen(String theMa,int quantity){
  18. this.theMa = theMa;
  19. this.quantity = quantity;
  20. }
  21. //3
  22. 写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。
  23. public void check(){
  24. System.out.println("面码:" + theMa + ",粉的份量:"+ quantity + "两,是否带汤:" + likeSoup);
  25. }
  26. }
  27. /********** End **********/

第6关:static关键字

  1. package step5;
  2. public class Test {
  3. /********** Begin **********/
  4. static String name = "楚留香"; //修饰静态变量
  5. static //静态导包
  6. {
  7. System.out.println("hello educoder");
  8. }
  9. public static void main(String[] args) {
  10. System.out.println("我叫" + name);
  11. study();
  12. }
  13. public static void study(){ //修饰变量
  14. System.out.println("我喜欢在educoder上学习java");
  15. }
  16. /********** End **********/
  17. }

第7关:选择题(二) 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/388712
推荐阅读
相关标签
  

闽ICP备14008679号