本文已参与「新人创作礼」活动,一起开启掘金创作之路。
JavaEE入门
如果你比较穷,一定要学计算机:计算机一定不是你翻身的行业,但一定会让你的生活变得更好。
我无力改变,只有奋斗,与其被卷掉,倒不如卷掉别人。选对了赛道,努力一把,起码让我过得更好一些。
面向对象与面向过程
// 面向对象,是一种看待问题、解决问题的思维方式。
// 类和对象的关系
类是对象的集合
对象是类中的个体
// 类的设计{特征:"姓名",行为:"吃饭"}
class 类名是一个标识符,遵循大驼峰命名法
复制代码
类的设计
package com.laity.basicSyntax.day2.oop;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day2.oop
* @date Date : 2021年11月15日 22:13
* @Description: 第一个类:复仇者类
* <p>
* 关于属性:
* 1.每一个属性当不赋值的时候,是有默认值的
* 2.属性,其实就是一个变量
* 3.但是不推荐一行定义多个变量的形式
*/
public class Avenger {
// 使用属性,描述所有对象共有的特征
public String name;
public int age;
public char gender;
public int height;
public int weight;
public static int count; // 用static修饰了 就是静态的属性(是可以被所有对象所共享的值)
// 使用方法,描述所有的对象共有的功能
public void eat(){} // 非静态方法
public void sleep(){
System.out.println(name); // 访问当前对象的名字
System.out.println(age); // 非静态成员可以调用方法
eat();
display();
}
public void beat(){}
/**
* 静态方法
*/
public static void display(){
System.out.println(count);
display();
// System.out.println(name); // 不能直接访问本类中的 非静态成员。
}
public static void main(String[] args) {
}
}
复制代码
对象的实例化
package com.laity.basicSyntax.day2.oop;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day2.oop
* @date Date : 2021年11月15日 22:25
* @Description: 对象的实例化
*/
public class Program {
public static void main(String[] args) {
// 需要使用关键字 new 进行实例化
Avenger avenger = new Avenger();
Avenger captionAmerican = new Avenger();
}
}
package com.laity.basicSyntax.day2.oop;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day2.oop
* @date Date : 2021年11月15日 22:36
* @Description: 类中的成员访问
* 成员访问:
* 非静态的: 需要使用对象进行访问
* 静态的: 理论上来讲 静态的成员 是需要使用类来访问的,但是实际上,对象也是可以进行访问的
*/
public class Program1 {
public static void main(String[] args) {
// 静态的成员访问
Avenger.count = 10;
// 理论上来讲 静态的成员 是需要使用类来访问的,但是实际上,对象也是可以进行访问的
// 静态的空间是唯一的,都有的对象是可以共享这块空间的
// 虽然静态的属性是可以使用对象来访问,但是实际使用中,依然会用类来访问
Avenger ironMan = new Avenger();
ironMan.count = 100; // 对象调用
Avenger thor = new Avenger();
thor.count = 200;
System.out.println(ironMan.count);
System.out.println(thor.count);
// 静态方法的调用
Avenger.display(); // 用类进行调用
}
/**
* 非静态的成员访问
*/
public static void nonStatic() {
// 1. 访问类中的属性
Avenger ironMan = new Avenger();
ironMan.name = "Laity";
ironMan.age = 18;
ironMan.gender = '男';
ironMan.eat();
ironMan.sleep();
ironMan.beat();
Avenger captionAmerican = new Avenger();
captionAmerican.name = "J哥";
captionAmerican.age = 19;
captionAmerican.gender = '男';
captionAmerican.eat();
captionAmerican.sleep();
captionAmerican.beat();
System.out.println(ironMan.age);
System.out.println(captionAmerican.age);
}
}
复制代码
静态和非静态
使用static修饰的属性、方法,被称为静态属性、静态方法
没有使用static修饰的属性、方法,被称为非静态属性、非静态方法,又被称之为实例属性、实例方法。
// 经验
如果某些属性是属于不同的对象的,每一个对象的值都不同,可以设计为非静态。例如人的名字。
如果某些属性是可以被所有的对象共享的,每一个对象看到的值都是相同的,可以设计为静态。例如对象的数量。
只需记住:
静态成员用类进行访问,非静态成员用对象进行访问。
静态方法中可以直接访问本类中的静态成员,不能直接访问本类中的 非静态成员。
非静态方法中可以直接访问本类中的静态成员,也可以直接访问本类的非静态成员。
开辟空间时间不同,静态开辟的时间早
我们在实际中经常用的是 非静态的(强调的是个体的差异性)
静态的常常用于 工具类(Arrays等)
复制代码
类是一种自定义的数据类型
// 类,其实是一种自定义的引用数据类型,这种类型可以作用于属性、方法参数、返回值...,之前怎么使用的基本数据类型,就可以怎样使用这种类型。
数据类型Avenger(自定义的 引用数据类型)
package com.laity.basicSyntax.day2.opp2.tmp;
/**
* @author : Laity
* @Project: JavaLaity
* @Package com.laity.basicSyntax.day2.opp2.tmp
* @date Date : 2021年11月15日 23:56
* @Description: 实现案例:上课了,老师让学生做自我介绍
*/
public class Program {
public static void main(String[] args) {
// 1.实例化相关的对象
Teacher teacher = new Teacher();
Student student = new Student();
// 老师让学生自我介绍
teacher.makeIntroduce(student);
}
}
class Teacher {
// 老师让某个学生做自我介绍
public void makeIntroduce(Student student) {
// 让学生做自我介绍
student.introduceSelf();
}
}
class Student {
// 这个自我介绍是学生的功能
public void introduceSelf() {
System.out.println("大家好,我是XXX,今年XXX岁");
}
}
复制代码
类是一种引用数据类型的体现
// 第一种
public static void main(String[] args) {
// 类是一种引用数据类型的体现
Person Laity = new Person();
Laity.name = "Laity";
change(Laity); // 指向的是同一个地址
System.out.println(Laity.name);
}
public static void change(Person person) {
person.name = "Jge";
}
// 第二种
public static void main(String[] args) {
// 类是一种引用数据类型的体现
Person Laity = new Person();
Laity.name = "Laity";
Laity.age = 18;
Cat cat = new Cat();
Laity.cat = cat;
Laity.cat.name = "小白";
Laity.cat.furColor = "white";
cat.name = "小猪";
System.out.println("Laity的猫的名字是:"+Laity.cat.name);
}
复制代码