对象的属性和方法:

image.png

image.png
类是模子,定义对象将会拥有的特征(属性)和行为(方法)
类是对象的类型,不同于int类型:具有方法

image.png
- 类的定义方法:
public class 类名 {
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
…
属性n的类型 属性n;
//定义方法部分
方法1;
方法2;
…
方法m;
}
使用对象的步骤
- 创建对象
类名 对象名 = new 类名();
School center = new School();
- 引用类的属性:对象名.属性
- 引用类的方法:对象名.方法名()
center.name = "北京中心"; //给name属性赋值
center.showCenter(); //调用showCenter()方法
一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段(10岁到60岁之间20元,否则免费)决定能够购买的门票价格并输出
package com.company;
/**
* Created by ttc on 17-12-25.
*/
public class JourneyPerson {
String name;
int age;
public void showInfo()
{
String ticketInfo = "";
if(age < 10 || age > 60)
{
ticketInfo = "门票免费";
}
else
{
ticketInfo = "门票价格为:20元";
}
System.out.println(name + "的年龄为:"+ age + ticketInfo);
}
}
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
JourneyPerson journeyPerson = new JourneyPerson();
while (true)
{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名,输入n退出程序");
//创建一个游人类
//将用户输入的姓名,赋值给游人对象journeyPerson的名字属性
journeyPerson.name = scanner.next();
if(journeyPerson.name.equals("n"))//代表用户想退出程序
{
// 退出程序
break;
}
//将用户输入的年龄,赋值给游人对象journeyPerson的年龄属性
System.out.println("请输入年龄");
journeyPerson.age = scanner.nextInt();
//输出该游人门票信息和个人信息showInfo
journeyPerson.showInfo();
}
System.out.println("退出程序");
}
}
定义类的方法
- 如果方法具有返回值,方法体中必须使用关键字return返回该值,返回值类型为该返回值的类型
return 表达式;
作用: 跳出方法、返回结果
public class Student{
String name = "张三";
public String getName(){
return name;
}
//……
}
-
如果方法没有返回值,返回值类型为void
image.png
方法调用
对象名.方法名();
方法之间允许相互调用,不需要知道方法的具体实现,实现重用,提高效率

image.png
常见错误
public class Student2 {
public double getInfo() {
double weight = 95.5;
double height = 1.69;
return weight, height;
}
}
方法不能返回多个值!
public class Student3 {
public String showInfo() {
public double getInfo() {
double weight = 95.5;
double height = 1.69;
return weight;
}
return "我是一名学生";
}
}
多个方法不能相互嵌套定义!
public class Student4 {
int age = 20;
if(age < 20) {
System.out.println("年龄不符合入学要求!");
}
public void showInfo() {
return "我是一名学生";
}
}
不能在方法外部直接写程序逻辑代码!
练习:计算骰子每面出现的次数
package com.company;
import java.util.Random;
/**
* Created by Think on 2018/6/3.
*/
public class DiceDemo {
int[] dice = new int[6];
Random random = new Random();
public void initial(){
for (int i = 0; i < 6; i++)
{
dice[i] = i + 1;
}
}
public int throwDice(){
int index = random.nextInt(6);
return dice[index];
}
}
package com.company;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* Created by Think on 2018/6/2.
*/
public class Test {
public static void main(String[] args) {
int[] count = new int[7];
DiceDemo diceDemo = new DiceDemo();
diceDemo.initial();
for (int i = 0; i < 6000; i++)
{
int x = diceDemo.throwDice();
count[x]++;
}
for (int i = 1; i < count.length; i++)
{
System.out.println("数字"+ i + "出现了" + count[i] + "次");
}
}
}
运行结果:
数字1出现了1014次
数字2出现了955次
数字3出现了992次
数字4出现了965次
数字5出现了1065次
数字6出现了1009次
成员变量和局部变量

image.png
作用域不同
局部变量的作用域仅限于定义它的方法
成员变量的作用域在整个类内部都是可见的
初始值不同
Java会给成员变量一个初始值
Java不会给局部变量赋予初始值
在同一个方法中,不允许有同名局部变量;在不同的方法中,可以有同名局部变量
在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
public class Test {
int score1 = 88;
int score2 = 98;
public void calcAvg() {
int avg = (score1 + score2)/2;
}
public void showAvg(){
System.out.println("平均分是: " + avg);
}
}
局部变量avg的作用域仅限于calcAvg()方法
作者:豆约翰
链接:https://www.jianshu.com/p/3bacbcb9bdec
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
