配套视频教程

本文B站配套视频教程

万物皆对象

分类是人们意识世界的一个很天然的过程,在日常生活中会不盲目地进行分类

身边的对象

顾客

姓名—张浩
年龄—20
体重—60kg

操作:
购买商品

收银员

员工号—10001
姓名—李明
部门—财务部

操作:
收款
打印账单

对象的特色——属性

属性——对象具备的各种特色
每个对象的每个属性都领有特定值
例如:张浩和李明的年龄、姓名不一样

对象的特色——办法(操作,行为)

办法——对象执行的操作(通常会扭转属性的值)

对象:用来形容客观事物的一个实体,由一组属性和办法形成

例子


属性:
品牌:法拉利
型号:F360 Spider
色彩:黄色
价格:380万元
办法:
动员
进行
减速

属性:
色彩:红色
办法:


对象同时具备属性和办法两项个性
对象的属性和办法通常被封装在一起,独特体现事物的个性, 二者相辅相承,不能宰割

说一说教室里的对象
形容他们的属性和办法

从对象形象出“类”

抽取出下列对象的独特特色(属性和办法)

类是模子,定义对象将会领有的特色(属性)和行为(办法)

类是对象的类型
不同于int类型:具备办法

  • 类是形象的概念,仅仅是模板

比如说:“人”

  • 对象是一个你可能看失去、摸得着的具体实体

赵本山,刘德华,赵丽颖

所有Java程序都以类class为组织单元

关键字class定义自定义的数据类型

public class  类名 {        //定义属性局部        属性1的类型 属性1;        属性2的类型 属性2;      …        属性n的类型 属性n;        //定义方法局部        办法1;        办法2;        …        办法m;}

定义一个类的步骤

  1. 定义类名
  2. 编写类的属性
  3. 编写类的办法

在不同城市的培训中心,会感触到雷同的环境和教学气氛,用类的思维输入核心信息

public class School {    String schoolName;        //核心名称    int classNumber;        //教室数目    int labNumber;            //机房数目            public void showCenter() {        System.out.println(schoolName + "培训学员\n" + "装备:"             + classNumber + "教" + labNumber + "机");    }}

应用对象的步骤

创建对象
类名 对象名 = new 类名();

School center = new School();

援用对象成员:应用“.”进行以下操作
援用类的属性:对象名.属性
援用类的办法:对象名.办法名()

center.name = "北京核心";    //给name属性赋值center.showCenter();         //调用showCenter()办法
public class InitialSchool {    public static void main(String[] args) {        School center = new School();        System.out.println("***初始化成员变量前***");        center. showCenter();//看到什么成果?        center.schoolName = "北京核心";                center.classNumber = 10;                        center.labNumber = 10;                        System.out.println("\n***初始化成员变量后***");        center.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("退出程序");    }}

类的办法

电动玩具狮子
属性:
色彩:黄色

行为:

定义类的办法

public 返回值类型 办法名() {

       //这里编写办法的主体

}

两种状况

  • 如果办法具备返回值,办法体中必须应用关键字return返回该值,返回值类型为该返回值的类型

return 表达式;
作用: 跳出办法、返回后果

public class Student{    String name = "张三";    public String  getName(){            return name;    }   //……}
  • 如果办法没有返回值,返回值类型为void
public class Student{    String name = "张三";    public void getName(){                }   //……}
办法是个“黑匣子”(不用关注其外部如何实现性能),实现某个特定的应用程序性能,并返回后果
香肠加工厂

办法调用:执行办法中蕴含的语句

对象名.办法名();

public class AutoLion {      String color = "黄色";  //色彩    /*跑*/    public void run(){        System.out.println("正在以0.1米/秒的速度向前奔跑。");     }    /*叫*/     public String bark(){         String sound = "大声吼叫" ;          return sound;     }     /*取得色彩*/    public String getColor(){         return color;    }    /*显示狮子个性*/    public String showLion(){        return "这是一个" + getColor() + "的玩具狮子!";    }}

调试察看

public class TestLion {    public static void main(String[ ] args) {           AutoLion lion = new AutoLion();           System.out.println(lion.showLion());                lion.run();           System.out.println(lion.bark());     }}

办法之间容许互相调用,不须要晓得办法的具体实现,实现重用,提高效率

常见谬误

public class Student1 {    public void  showInfo() {           return  "我是一名学生";        }}

办法的返回值类型为void,办法中不能有return 返回值!

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 "我是一名学生";    }}

不能在办法内部间接写程序逻辑代码!

模仿骰子

public class Dice {    int[] value = new int[6];    //初始化    public void init()    {        for(int i = 0; i < 6; i++)        {            value[i] = i+1;        }    }    //抛骰子    public int throwDice()    {        //生成一个随机数组下标[0-6)之间的数        int index = (int)(Math.random()*6);        return value[index];    }}

测试类

package com.company;/** * Created by ttc on 17-12-22. */public class TestDice {//    复用..    public static void main(String[] args) {        //用来计数1-6之间的数一共呈现了几次的一个数组        int[] count = new int[7];        Dice dice = new Dice();//创立 一个骰子对象(6个面都是0)        dice.init();//初始化骰子对象,把6个面都赋上值        //模仿抛600000次骰子        for(int i = 0; i < 60; i++)        {            int num = dice.throwDice();//本次骰子的点数(1-6)之间的数            //把点数作为下标,代入到count数组中,将count[num]对应的值+1(记录num呈现的次数)            // count[num]以后的值,保留着num曾经呈现了多少次这个信息            count[num]++;//            System.out.println(num);        }        //最终对count数组遍历,        for(int i = 1; i < count.length; i++)        {            //count[i]里保留着i呈现了多少次            System.out.println(i+"呈现了" +count[i]+"次");        }    }}
从键盘接管三门课分数,计算三门课的平均分和总成绩,编写问题计算类实现性能
  1. 创立类 ScoreCalc
  2. 编写办法实现各性能
  3. 编写测试类

变量的作用域

变量申明的地位决定变量作用域
变量作用域确定可在程序中按变量名拜访该变量的区域

//…for(int  a = 0; a < 4; a++) {     System.out.println ("hello" );}System.out.println ( a );//…

成员变量和局部变量

谁能应用这些变量?

作用域不同
局部变量的作用域仅限于定义它的办法
成员变量的作用域在整个类外部都是可见的
初始值不同
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()办法

面向对象编程

输出三门课的问题,计算并打印均匀问题和总成绩
public static void main(String[ ] args) {            Scanner input = new Scanner(System.in);            System.out.print("请输出Java问题:");            int java = input.nextInt();            //……            /*计算并显示输入*/            int total = java + c + db;            double avg = total / 3;            System.out.print("总成绩:" + total);            System.out.print("\n平均分: " + avg);}

ScoreCalc类 和 Test类