## 类与对象
对象是存在的具体实体,具有明确定义的特征和行为。万物皆为对象,对象因我关注而产生。在软件系统中,我们用类来模拟现实生活中的实体。**类是对象的抽象,对象是类的实例。**
## 课程代码
~~~java
package com.demo2;
/**
* 学生类
* @author 一教室
*
*/
public class Student {
// 成员变量(有时候也可以看做为全局变量) ——(静态的)属性
//[修饰符] 数据类型 成员变量名 [= 默认值]; //在语法格式里,中括号有时表示中括号中的内容可有可无
//姓名
public String name;
//性别
public String sex;
//年龄
public int age;
//身高
public double height = 175.0;//默认值
//体重
public double weight = 70.5;
//学号
public String code;
//地址
private String address;
//近视
private boolean myopia;
//学生证
public static String stuIdCard = "qw124";//它此时已经不是成员变量了,而是类变量或静态变量。
//方法 ——(动态的)行为
/*[修饰符] 返回值 方法名([参数列表]) {
方法体语句;
[返回值]
}*/
//如果在方法内部使用return,明确的返回某一项数据,在方法定义的时候就需要将方法定义中的返回值设为该数据的类型。
//如果没有,则使用void关键字,表示该方法没有返回值
/**
* 听课
* @param className
* @param teacherName
*/
public String visitClass(String className, String teacherName) {//形参列表,这个参数指的是形式参数
int a = 5;//局部变量:在大括号(不是类的大括号)内部定义的变量,叫做局部变量,它的作用范围只局限于这个大括号内
return this.name + "正在上" + teacherName + "的" + className + "课";//该处的this指的正在调用该方法的对象
}
/**
* 回答问题
* @param question
* @return
*/
public String answerQuestion(String question) {
String answer = question + "的回答是:xxxyyy";
return answer;
}
/**
* 打印听课方法
* @param className
* @param teacherName
*/
public void printVisitClass(String className, String teacherName) {
System.out.println(this.visitClass(className,teacherName));
}
/**
* 吃饭
* 在静态的方法中无法引用非静态的内容
* @param count
* @return
*/
public static String eatFood(int count) {
return "学生们今天吃了" + count + "顿饭" + ",用了公共学生卡" + stuIdCard /*+ name*/;
}
//构造器:相当于一个工具,是为了该类能够更好的生成一个个的对象
//构造器相当于一个特殊的方法
//如果不手动的生成构造器,系统会自动的给我们添加一个无参的构造器
/*[修饰符] 类名 ([参数列表]) {
方法体语句;
}*/
//注意!注意!注意!构造器是类创建对象的唯一途径
public Student() {
}
public Student(String name1,String sex1) {
this.name = name1;//该处的this指的是之后将要通过该构造器创建出来的对象
this.sex = sex1;
}
public Student(String name, String sex, int age, double height, double weight, String code) {
this.name = name;
this.sex = sex;
this.age = age;
this.height = height;
this.code = code;
this.weight = weight;
}
public static void main(String[] args) {
//如何通过类来创建对象,我们使用的new关键字+构造器实现
//语法:类类型 变量名 = new 类构造器;
//创建对象
Student caokai = new Student();
//使用对象:给对象的属性进行赋值
caokai.age = 25;
caokai.code = "j121-001";
caokai.name = "曹凯";
caokai.sex = "男";
//使用对象:调用对象的方法
System.out.println(caokai.visitClass("java", "李老师"));//String a = caokai.visitClass(xxx,xxx);
//使用对象:调用对象的属性
System.out.println("caokai的名字" + caokai.name);
System.out.println("caokai的身高" + caokai.height + "cm");
System.out.println("caokai的体重" + caokai.weight + "kg");
Student xuChunLin = new Student();
xuChunLin.age = 24;
xuChunLin.code = "j121-002";
xuChunLin.name = "徐春林";
xuChunLin.sex = "男";
System.out.println(xuChunLin.visitClass("java", "李老师"));
System.out.println("xuChunLin的名字" + xuChunLin.name);
System.out.println("xuChunLin的身高" + xuChunLin.height + "cm");
System.out.println("xuChunLin的体重" + xuChunLin.weight + "kg");
Student luWenXin = new Student("陆文鑫","男");
luWenXin.height = 185.0;
System.out.println("luWenXin的名字" + luWenXin.name);
System.out.println("luWenXin的性别" + luWenXin.sex);
luWenXin.printVisitClass("java", "李老师");
System.out.println("luWenXin的身高" + luWenXin.height + "cm");
System.out.println("luWenXin的体重" + luWenXin.weight + "kg");
luWenXin.address = "南通市崇川区";
System.out.println(luWenXin.myopia);
}
}
~~~
~~~java
package com.demo2;
/**
* 该类是对学生类的使用说明演示
* @author 一教室
*
*/
public class StudentUse {
//定义一个类类型的成员变量
public Student stu;
StudentUse() {
}
public static void main(String[] args) {
Student gaoJunNan = new Student("高峻楠", "男", 24, 175.0, 60.0, "j121-004");
System.out.println(gaoJunNan.name);
//gaoJunNan.address;错误代码:private 修饰的成员变量和方法不能够在其他类中被访问
StudentUse stuUse = new StudentUse();
System.out.println(stuUse.stu);
gaoJunNan.stuIdCard = "1232";
//stuUse.stuIdCard;静态变量不能被创建出来的对象访问调用,只能被类调用
System.out.println(Student.stuIdCard);
System.out.println(Student.eatFood(3));
/**
* static 修饰的变量或方法是类所特有的变量和方法,
* 类是指对象的特征模板,所以类所特有的东西,对象也可以获取到,但是不建议通过对象去获取访问类变量和类方法
*/
System.out.println(gaoJunNan.eatFood(3));
System.out.println(gaoJunNan.stuIdCard);
System.out.println(Student.stuIdCard);
//Student xuShuang = new Student("徐爽", "男", 24, 176, 60.0, "j121-005");
Student xuShuang = null;
xuShuang = new Student("徐爽", "男", 24, 176, 60.0, "j121-005");
//这就是为什么不建议通过对象调用修改类变量和类方法
System.out.println(xuShuang.stuIdCard);//1232
}
}
~~~
- 课程开始
- 第一课20191008
- 第二课20191009
- HTML
- CSS
- CSS第一课
- CSS第二课
- CSS第三课
- CSS第四课
- CSS第五课
- JavaScript
- Js第一课
- Js第二课
- Js第三课
- Js第四课
- Js第五课
- Js第六课
- Js第七课
- Js-事件模型
- Js-2019-10-31-标准库
- Js-2019-11-01- 标准库
- Js-2019-11-01-Json
- Js-2019-11-01-对象的创建
- Js-2019-11-04-this的使用
- Js-2019-11-05-storage与异常
- Js-2019-11-05-BOM与补充知识点
- Js-2019-11-06-正则表达式和计时器
- jQuery
- jQuery-2019-11-13-初识jQuery
- jQuery-2019-11-14-jQuery节点操作
- jQuery-2019-11-15-jQuery节点操作二
- jQuery-2019-11-16-jQuery效果与动画
- Java
- Java-2019-11-27-变量直接量数据格式运算符
- Java-2019-11-28-流程控制
- Java-2019-12-02-数组
- Java-2019-12-04 面向对象
- Java-2019-12-05-封装
- Java-2019-12-06-深入构造器
- Java-2019-12-09-继承
- Java-2019-12-10-多态
- Java-2019-12-10-包装类
- Java-2019-12-11-final修饰符
- Java-2019-12-11-包装类
- Java-2019-12-11-接口
- java-2019-12-13-设计模式
- Java-2019-12-16-集合框架
- Java-2019-12-18-集合排序
- Java-2019-12-23-常用类学习
- Java-2019-12-25-异常处理
- Java-2019-12-31-内部类详解
