.面向对象的重要的概念
类: 是一切具有相似事物的统称。是泛泛的概念。 可以描述一类事物的特征和行为
对象:是类的具体的实体,是类衍生出来的。有类才有对象
特征: 就是一类事物的属性 , 比如 人类的 名字 年龄 身高 体重...
他们是静的东西 在Java中使用变量来表示 一类事物的特征
行为: 就是动作
他们是动的东西 在Java中使用 方法来表示 一类事物的行为
一个类是由特征(变量)和行为(方法)组成
一个类准确来说暂时由变量和方法组成的
人类:
特征:Java中用变量
名字
年龄
身高
体重
行为: Java中方法
吃饭
睡觉
3.声明一个类的语法格式
public class 类 {
特征(Java中的变量)
行为(java 中暂时不带static的方法)
}
package com.qf.test;
/**
*
* @author bowang
* 人类:
* 特征:Java使用变量 以后我叫属性
* 名字
* 年龄
* 身高
*
*
* 行为: Java中使用方法来表示
* 吃饭
* 睡觉
*/
public class Person {
//特征:
//类中的变量不要赋值
String name;//默认的值 null
int age;//默认值是0
double height;//默认值是0.0
//行为:
//Java中的方法来表示
//在类中暂时不要加static
public void eat () {
System.out.println("能吃饭");
}
public void sleep () {
System.out.println("站着睡");
}
//以上就是声明好的一个类
}
练习:
狗类:
属性: 名字 毛色 性别
行为: 打架 看家
package com.qf.test;
public class Dog {
//特征:
String name;
String color;
char sex;//性别
//行为:
public void fight () {
System.out.println("狗打架");
}
public void lookHome () {
System.out.println("狗看家");
}
}
4.创建对象
一个类声明好以后,不用它 的话,他就一直存在,但是得用这个类,可以使用类衍生出来对象
通过类创建对象。官方术语: 实例化对象
对象存在的目的: 对属性进行赋值,对方法调用
1.先有类才能有对象
2.对象的创3建必须在main主函数中
对象创建的语法格式:
类 对象的名字= new 类();
package com.qf.test;
//测试类 带有main主函数的
public class Demo1 {
public static void main(String[] args) {
//创建对象必须在main主函数中创建
//类 对象的名字 = new 类(); 想创建人类的对象
Person person1 = new Person();//person1 具体的对象 人
//person1 是Person类衍生出来的
//person1对象的特征和行为要参考Person类
//person1的 名字 为 狗蛋
person1.name = "狗蛋";//对对象中的属性进行赋值
person1.age = 12;
person1.height = 167;
//以上对对象进行赋值
//以下在打印数据
System.out.println("person1这个对象的名字为:"+person1.name);
System.out.println("person1这个对象的年龄为:"+person1.age);
System.out.println("person1这个对象的身高为:"+person1.height);
//类中有方法, 咱们可以使用 对象.方法的名字来调用方法
person1.eat();
person1.sleep();
//通过类去创建一个对象,然后对对象的属性进行赋值,对对象的方法进行调用
}
}
package com.qf.test;
public class Demo2 {
public static void main(String[] args) {
Dog dog1 = new Dog();
//对属性进行赋值
dog1.name = "大黄";
dog1.color = "黑色";
dog1.sex = '公';
System.out.println("dog1的名字为:"+ dog1.name + ", dog1的颜色为:"+ dog1.color + ", dog1的性别为:"+ dog1.sex);
//对方法进行调用
dog1.fight();
dog1.lookHome();
}
}
类会声明了 对象也会创建。
5.创建类和带有main主函数的类可以写在一个文件中
现在写的额类和带有main主函数 不在同一个文件中,分开写的
但是也可以写在用一个Java文件中。新建的文件的名字应该是 测试类类名
package com.qf.test;
//当一个文件中有两个类的时候 ,只能有一个public 来修饰类
//The public type Pig must be defined in its own file
class Pig {
String name;//名字属性
double price;//猪肉的价格
String color;//猪肉的颜色
//行为
public void upTree() {
System.out.println("猪能上树");
}
}
public class Demo3 {
public static void main(String[] args) {
//创建对象
Pig pig1 = new Pig();
pig1.name = "佩琪";
pig1.price = 18.9;
pig1.color = "pink";
System.out.println("pig1的名字:" + pig1.name);
System.out.println("pig1的价格:" + pig1.price);
System.out.println("pig1的颜色:" + pig1.color);
pig1.upTree();
}
}
回顾上午的内容
1.创建类
一个类 现在所学的是由属性和方法组成的
calss Person {
String name;
int age;
//行为 在Java中 用方法表示行为
public void eat () {
sout("");
}
}
2.创建对象
由类衍生出来的 具体的实体 模板 ==》 类
暂时在main主函数中 创建对象
类 对象的名字 = new 类();
对象.属性 = 值;
3.创建类和带有main主函数的类写在同一个文件中写法
6.构造方法
1.构造方法是用来初始化对象的(和创建对象有关的!!!)
2.构造方法必须写在实体类中 不是带有main主函数的类中
写在类似于 Person类 Dog类中
6.1无参构造方法
语法格式:
public 类名 () { 语句体 }
package com.qf.test;
class People {
//属性
String name;
int age;
//定义一个无参构造方法
public People () {
System.out.println("嘻嘻");
//this 当前对象
name = "狗蛋";
age = 12;
}
}
public class Demo4 {
public static void main(String[] args) {
//依靠构造方法去创建 对象
People people = new People();
people.name = "二狗";
people.age = 22;
System.out.println(people.name);//
System.out.println(people.age);//
People people2 = new People();
}
}
6.2有参构造方法
语法格式:
public 类名 (参数) { }
package com.qf.test;
class Cat {
String name;
int age;
char sex;
//一旦在类中写了有参构造方法,默认无参构造方法就不在了
//有参构造方法 是特殊的方法
public Cat (String name, int age, char sex) {
//this 代表是当前对象
//this.name 当前对象的name属性
this.name = name;
this.age = age;
this.sex = sex;
}
}
public class Demo6 {
public static void main(String[] args) {
//创建对象和构造方法有关系, new Cat(); 依靠类中无参构造方法
Cat cat = new Cat("二虎", 1, '公');
cat.name = "二牛";
cat.age = 12;
cat.sex = '母';
System.out.println(cat.name);//
System.out.println(cat.age);//
System.out.println(cat.sex);//
}
}
package com.qf.test;
class Teacher {
String name;
double weight;
int age;
//快捷键 右键 -》source->Genarate Constructor using Field
public Teacher() {
}
public Teacher(String name, double weight) {
this.name = name;
this.weight = weight;
}
public Teacher(String name, double weight, int age) {
this.name = name;
this.weight = weight;
this.age = age;
}
}
public class Demo7 {
public static void main(String[] args) {
//将实参(new Teacher("老邢", 200, 89);)赋值给形参(构造方法中),让形参给变量赋值即可
Teacher teacher = new Teacher("老邢", 200, 89);
System.out.println(teacher.name);
System.out.println(teacher.weight);
System.out.println(teacher.age);//
}
}
作业:
1.总结 一周的总结
2一套卷子
查漏补缺


被折叠的 条评论
为什么被折叠?



