一、面向对象概念
现实生活:
类:抽象的概念,把具有相同特征和操作的事物归为一类
先有实体,再有类的概念
代码世界:
类:抽象的概念,把具有相同属性和方法的对象归为一类
编写顺序:先有类,再创建对象
类的作用:类相当于一个模板,刻画出具有相同属性和方法的对象
二、类
- 类中只有属性和方法
- 属性也叫做全局变量,属性分为成员变量和静态变量
- 方法分为成员方法和静态方法
public class 类名{
//属性也叫做全局变量,分为成员变量和静态变量
//成员变量:属于对象的变量,必须使用对象调用
数据类型 变量名;
//静态变量:属于类的变量,使用类调用
static 数据类型 变量名;
//方法分为成员方法和静态方法
//成员方法
访问修饰符 返回值类型 方法名([参数]){}
//静态方法
访问修饰符 static 返回值类型 方法名([参数]){}
}
三、对象
创建对象的语法:类名 对象名 = new 类名();
new 构造方法; 属于对象,就在堆内存中开辟空间
类名 对象名 :对象名属于引用,存的是对象在堆内存中的地址
操作对象:
a.设置成员属性
b. 获取成员属性
c.调用成员方法
四、成员属性/成员变量
语法结构:数据类型 变量名;
编写的位置:类里,方法的外面
成员变量 vs 局部变量成员变量:类里,方法的外面的变量,并且系统会赋默认值,作用在整个类中
数据类型 初始值 boolean false char ‘\u0000’ byte 0 short 0 int 0 long 0L float 0.0f double 0.0d 引用类型变量 null 局部变量:方法内的变量,系统不会赋默认值,作用在方法中
五、成员方法
语法结构:访问修饰符 返回值类型 方法名([参数]){}
编写的位置:类之里,方法之外成员方法 vs 静态方法
成员方法:属于对象的方法,必须使用对象调用
静态方法:属于类的方法,使用类名调用实例:
package com.qf.test01;
public class Test01 {
/**
* 知识点:初识面向对象
*
* 需求:创建人类的对象
* 分析:
* 1.创建人类(属性:name、sex、age,方法:eat、sleep、method)
* 2.创建对象
* 3.操作对象(设置属性、获取属性、调用方法)
*/
public static void main(String[] args) {
//创建对象
Person p = new Person();
//设置属性
p.name = "小明";
p.sex = '男';
p.age = 23;
//获取属性
System.out.println(p.name);
System.out.println(p.sex);
System.out.println(p.age);
//调用成员方法
p.eat();
p.sleep();
//调用静态方法(静态方法和属性需要使用类名调用)
Person.method();
}
}
package com.qf.test01;
public class Person {
String name;
char sex;
int age;
public void eat(){
System.out.println("吃饭饭");
}
public void sleep() {
System.out.println("睡觉觉");
}
public static void method() {
System.out.println("静态方法");
}
}
六、构造方法/构造器
含义:与类名相同,且没有返回项的方法
分类 :无参构造、有参构造
作用:
a.和new关键字一起表示创建对象
b.初始化数据注意:
a.如果写了有参构造,系统不会默认实现无参构造
c.当类中没有写构造方法时,系统会默认添加无参构造(无参数的构造方法)
b.构造方法可以重载经验:
a.写了有参构造,自己把无参构造写上
b.有参构造好处:创建对象时,把数据赋值给该对象实例演示:实例
public class Person{
//注意:这种不是构造方法,是成员方法
public void Person(){}
}
package com.qf.test01;
public class Test01 {
public static void main(String[] args) {
// Person p = new Person();
// p.name = "小明";
// p.sex = '男';
// p.age = 23;
//初始化数据
Person p = new Person("小明", '男', 23);
System.out.println(p.name);
System.out.println(p.sex);
System.out.println(p.age);
p.eat();
p.sleep();
}
}
package com.qf.test01;
public class Person {
//属性
String name;
char sex;
int age;
//构造方法 -- 无参构造
public Person(){
System.out.println("Person的无参构造");
this.name = "小康";
this.sex = '男';
this.age = 43;
}
//构造方法 -- 有参构造
public Person(String name,char sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
//成员方法
public void eat(){
System.out.println(this.name + "吃饭饭");
}
public void sleep(){
System.out.println(this.name + "睡觉觉");
}
//静态方法
public static void method(){
System.out.println("静态方法");
}
}