重点理解:类是模板,对象是模板造出来的。这是面向对象最基础的概念,听不懂后面继承,多态,全部会懵。
1.什么是类,什么是对象
现实举例:
类(class):图纸,模板---->汽车设计图纸,只定义特征,行为,不是真正的汽车。
对象(object):根据模版制造出来实实在在实物---->一台真实的宝马汽车。
Java里面:
类:用来描述同一类事物,定义有什么属性(成员变量)、能干什么行为(成员方法)
对象:使用new 类名()创建出来,内存中独立存在,可以存数据、调用方法。
一个类,可以new出来多个不同对象,每个对象相互独立,拥有自己的数据。
组成:
类里面有两大成员:
(1).成员变量(属性):写在类里面,方法外面。描述事物特征。
(2).成员方法(行为):写在类中,不要写static,描述对象能干的事。
class Person{ int age; String name; public void sayHello(){ System.out.println("你好,我叫:"+name",今年"+age+"岁"); } } public class PersonDemo{ public static void main(String[] args){ Person p1=new Person(); p1.name="zhangsan"; p1.age=18; Person p2=new Person(); p2.name="李四"; p2.age=20; p1.sayHello(); p2.sayHello(); } }为什么写完实体类,还要单独写一个测试类?
举个生活化例子:
类 = 图纸(比如汽车图纸)对象 = 根据图纸造出来的真实汽车
图纸本身不能开!图纸只是规定汽车长啥样、有什么功能。你必须按照图纸
new出来一辆真实汽车(对象),才能去开车。而测试类(里面放 main 方法),就是用来 new 对象、调用功能,跑程序的地方。
2.成员变量vs局部变量(高频考点)
| 对比 | 成员变量 | 局部变量 |
| 定义位置 | 类内部,方法外面 | 方法内部/方法的参数列表 |
| 默认初始值 | 有默认值(int=0;String=null等) | 没有默认值,必须赋值才能使用 |
| 内存位置 | 对象在堆内存,成员跟着对象 | 在栈内存,方法调用完毕立刻消失 |
| 生命周期 | 对象存在,变量就存在,对象销毁才消失 | 方法执行完立刻消失 |
class Person{ String name; int age; public void test(){ int num=100; System.out.println(num); } }3.构造方法(Constuctor)
作用:new对象的时候自动执行,给成员变量做初始化赋值。
构造方法硬性规则(缺一不可)
1.方法名和类名完全一模一样,大小写都要相同
2.没有返回值类型!!连void都不能写
3.创建对象new 类名(),自动调用构造,不需要手动调用
class Person{ String name; int age; public Person(){ System.out.println("执行无参构造"); } public Person(String n,int a){ name=n; age=a; System.out.println("执行有参构造"); } } Public class Test{ public static void main(String[]args){ Person p1=new Person(); Person p2=new Person("wangwu",19); System.out.println(p2.name+""+p2.age); } }练习:
1.定义Phone手机类
成员变量:brand品牌,price价格;
成员方法:call()打印:**手机正在打电话。
main中new两个手机对象,给属性赋值,调用call方法
class Phone{ String brand; double price; public void call(){ System.out.println(brand+"手机正在打电话"); } } public class TestPhone{ public static void main(String[]args){ Phone p1=new Phone(); p1.brand="小米"; p1.price=3999; p1.call(); Phone p2=new Phone(); p2.brand="华为"; p2.price=4999; p2.call(); } }