第一题:概念辨析
-
类是对象的模板,对象是类的实体
-
如何定义一个类,由哪些部分组成,各个部分的作用是什么?
三部分:
成员变量:描述事物的状态信息
构造方法:创建事物对象
成员方法:描述事物能做什么 -
如何创建一个对象,如何使用该对象?
// 创建对象格式:
数据类型 变量名 = new 数据类型();
// 对象使用方式:
变量名.成员变量
变量名.成员方法 -
局部变量和成员变量的区别?
在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
作用范围不一样
成员变量:类中
局部变量:方法中
初始化值的不同
成员变量:有默认值
局部变量:没有默认值。
在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 -
构造方法和成员方法的区别?
作用不同:
构造方法:创建对象
成员方法:执行某具体功能
命名不同:
构造方法:类名一致
成员方法:自定义
返回值类型不同:
构造方法:无返回值类型
成员方法:void或者确定的数据类型
调用不同:
构造方法:new 关键字调用
成员方法:对象.成员方法名调用
第二题:语法练习
-
定义一个圆形Circle类。
-
属性:
-
r:半径
-
-
构造方法:
-
无参构造方法
-
满参构造方法
-
-
成员方法:
-
get/set方法
-
showArea方法:打印圆形面积
-
showPerimeter方法:打印圆形周长
-
-
-
定义测试类,创建Circle对象,并测试。
-
代码实现,效果如图所示:
-
开发提示:
面向周长公式:2 * 3.14* 半径
圆形面积公式:3.14* 半径^2
-
参考答案:
-
Circle类:
public class Circle { int r; public Circle() { } public Circle(int r) { this.r = r; } public int getR() { return r; } public void setR(int r) { this.r = r; } public void showArea(){ System.out.println("半径为:"+ r +",面积为:"+ ( 3.14 * r * r)); } public void showPerimeter(){ System.out.println("半径为:"+ r +",面积为:"+ ( 2 * 3.14 * r)); } }
-
测试类:
public class Test2 { public static void main(String[] args) { Circle circle = new Circle(8); circle.showArea(); circle.showPerimeter(); } }
-
第三题:语法练习
-
定义一个日期MyDate类。
-
属性:
-
year:年
-
month:月
-
day:日
-
-
构造方法:
-
满参构造方法
-
-
成员方法:
-
get/set方法
-
showDate方法:打印日期。
-
isBi方法:判断当前日期是否是闰年
-
-
-
定义测试类,创建MyDate对象,并测试。
-
代码实现,效果如图所示:
-
开发提示:
-
闰年:
-
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
-
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
-
-
-
参考答案:
-
MyDate类:
public class MyDate { int year; int month; int day; public MyDate(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getDay() { return day; } public void setDay(int day) { this.day = day; } public void showDate() { System.out.println("日期:" + year + "年" + month + "月" + day + "日"); } public void isBi() { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { System.out.println(year + "年是闰年"); } else { System.out.println(year + "年不是闰年"); } } }
-
-
测试类:
public class Test3 { public static void main(String[] args) { MyDate date = new MyDate(1900, 1, 1); date.showDate(); date.isBi(); } }
第四题:语法练习
-
定义一个扑克Card类。
-
属性:
-
花色
-
点数
-
-
构造方法:
-
满参构造方法
-
-
成员方法:
-
showCard方法:打印牌面信息
-
-
-
定义测试类,创建Card对象,调用showCard方法。
-
代码实现,效果如图所示:
-
参考答案:
-
Card类:
public class Card { private String ds; // 点数 private String hs; // 花色 public Card(String ds, String hs) { this.ds = ds; this.hs = hs; } public void showCard() { System.out.println( ds + hs ); } } 测试类: public class Test5 { public static void main(String[] args) { Card card = new Card("黑桃", "A"); card.showCard(); } }
-
第五题:语法练习
-
定义两个类,经理类Manager,程序员类Coder
-
Coder类:
-
属性:姓名,工号,薪资
-
构造方法:无参构造方法,满参构造方法
-
成员方法:
-
get/set方法
-
intro方法:打印姓名,工号信息
-
showSalary方法:打印薪资信息
-
work方法:打印工作信息
-
-
-
Manager类:
-
属性:姓名,工号,薪资
-
经理的薪资有两部分组成:基本工资+奖金
-
-
构造方法:无参构造方法,满参构造方法
-
成员方法:
-
get/set方法
-
intro方法:打印姓名,工号信息
-
showSalary方法:打印薪资信息
-
work方法:打印工作信息
-
-
-
定义测试类,创建Manager对象,创建Coder对象,并测试。
-
参考答案:
-
Coder类:
package test4; public class Coder { private String name; private String id; private int salary; // 基本工资 public Coder() { } public Coder(String name, String id, int salary) { this.name = name; this.id = id; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } public void showSalary() { System.out.println("基本工资为" + salary + ",奖金无"); } public void intro() { System.out.println("程序员姓名:" + name); System.out.println("工号:" + id); } public void work() { System.out.println("正在努力写代码......"); } }
-
Manager类:
public class Manager { private String name; private String id; private int[] salary; // 基本工资 + 奖金 public Manager() { } public Manager(String name, String id, int[] salary) { this.name = name; this.id = id; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public int[] getSalary() { return salary; } public void setSalary(int[] salary) { this.salary = salary; } public void showSalary() { System.out.println("基本工资为" + salary[0] + ",奖金为" + salary[1]); } public void intro() { System.out.println("经理姓名:" + name); System.out.println("工号:" + id); } public void work() { System.out.println("正在努力的做着管理工作,分配任务,检查员工提交上来的代码....."); } }
-
测试类:
public class Test5 { public static void main(String[] args) { int[] salary = {15000, 3000}; Manager m = new Manager("James", "9527",salary ); m.intro(); m.showSalary(); m.work(); System.out.println("============"); Coder c = new Coder(); c.setName("Kobe"); c.setId("0025"); c.setSalary(10000); c.intro(); c.showSalary(); c.work(); } }
-
第六题:语法练习
-
老师类Teacher
-
属性:姓名name,年龄age,讲课内容content
-
成员方法:吃饭eat方法,讲课teach方法
-
-
学生类Student
-
属性:姓名name,年龄age,学习内容content 行为:吃饭eat方法, 学习study方法
-
-
代码实现,效果如图所示:
-
参考答案:
-
Teacher类:
package test6; /* */ public class Teacher { private String name; private int age; private String content; /** * 讲课方法 */ public void jiangke() { System.out.println("年龄为"+age+"的"+name+"正在亢奋的讲着"+content+"的知识........"); } public void eat() { System.out.println("年龄为"+age+"的"+name+"正在吃饭...."); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Teacher() { } public Teacher(String name, int age, String content) { this.name = name; this.age = age; this.content = content; } }
-
学生类:
public class Student { private String name; private int age; private String content; public void study() { System.out.println("年龄为"+age+"的"+name+"正在专心致志的听着"+content+"的知识........"); } public void eat() { System.out.println("年龄为"+age+"的"+name+"正在吃饭...."); } public Student(String name, int age, String content) { this.name = name; this.age = age; this.content = content; } public Student() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
-
测试类:
public class Test6 { public static void main(String[] args) { Teacher t = new Teacher(); t.setName("周老师"); t.setAge(30); t.setContent("java面向对象"); t.eat(); t.jiangke(); Student stu = new Student("韩同学",18,"java面向对象"); stu.eat(); stu.study(); } }
-