Java-面向对象
类和对象
类:代表一类事物,抽象的概念。eg:人类,车类,花类
对象:代表是一个具体,真实存在的事物。eg:凤姐,刘老师门口那辆28自行车,那朵百合
类是对象模板,对象是类的一个具体的体现
类:特征和行为
属性和方法
属性—变量
Java:属性和方法来描述一类事物,类
Java中类的格式(创建引用类型)
class 类名{
属性;
方法;
}
方法:返回值类型 方法名(参数列表){
方法体
}
//设计一个人类,属性:姓名,年龄,性别 方法:说话 class Person{ String name; int age; String sex; void speak(){ System.out.println("嘻嘻哈哈"); } }
Java中的对象:先设计类,然后根据类来创建对象,之后通过对象来实现其功能
类名 对象名=new 类名()
在程序运行的时候,根据类来创建对象,在main方法当中创建对象
访问对象的属性和方法
对象名.属性名
对象名.方法名
public class Test1 { public static void main(String[] args) { Car car=new Car(); car.name="奔驰"; car.color="蓝色"; car.price=100; car.type="豪华型"; car.start(); car.run(); car.stop(); } } class Car{ String name; String color; double price; int speed;//默认0 String type; void start(){ speed=speed+100; System.out.println("加速以后的速度:"+speed); } void run() { System.out.println("当前的速度:"+speed); } void stop(){ speed=0; System.out.println("刹车以后的速度:"+speed); } }
构造方法
1、使用构造方法的原因:创建出来对象以后,给对象的属性赋值过程,很麻烦,希望能在创建对象的时候,直接给对象的属性赋值,并且可以执行一些初始化的操作
2、构造方法格式:
类名(参数列表){
初始化的操作
}
3、构造方法的特点:
结构上:没有返回值类型,而且方法名跟类名一致
功能上:只有当创建对象(new)来调用构造方法,执行一些初始化的操作(eg:给对象的属性赋值)
创建对象的格式(标准版):类名 对象名=new 构造方法
public class Test1 { //构造方法:在new(创建对象)才调用构造方法,构造方法实现是一些初始化的操作(给属性赋值) //构造方法:没有返回值类型,名字跟类名一致 //构造方法格式:类名(参数列表){初始化的操作} public static void main(String[] args) { Person person=new Person("张三",20,"男"); //创建Person对象,调用构造方法,给name,age,sex赋值 person.show(); Person person2=new Person("李四",25,"男"); person2.show(); } } //设计一个Person类:属性:姓名,年龄,性别 //方法:显示信息(姓名,年龄) //通过构造方法来创建该Person对象,并且给年龄,姓名,性别属性赋值 class Person{ String name; int age; String sex; Person(String name1,int age1,String sex1){ //当创建(new)Person对象时,系统会自动调用Person的构造方法,把外界传入的参数值name1赋值给name属性,... name=name1; age=age1; sex=sex1; } void show(){ System.out.println(name+","+sex+","+age); } }
4、this关键字:当前(对象)的
修改构造方法:企业开发中,构造方法格式,目前较为固定
class Person{ String name; int age; String sex; Person(String name,int age,String sex){ this.name=name;//this.name:当前对象的name属性 this.age=age; this.sex=sex; } void show(){ System.out.println(name+","+sex+","+age); } }
如果我们没有编写构造方法,则系统会默认地给我们添加一个无参无内容的空的构造方法
如果我们自己写了构造方法,系统默认提供的构造方法会被覆盖
public class Test1 { public static void main(String[] args) { Emp emp=new Emp();//默认调用系统默认添加的无参的构造方法 emp.name="haha"; System.out.print(emp.name); } } class Emp{ String name; int age; //系统会默认,给我们添加了一个无参无内容一个空的构造方法 Emp(){}//我们看不见,是系统默认的 }