Java基础-面向对象Part1
目标
- 什么是对象
- 对象的特征
- 对象与类的关系
- 如何定义一个类
- 对象如何创建
- 如何调用对象的方法
- this的用法
- 基本引用类型与引用类型参数传递的区别
什么是对象
万物都是对象
对象和类的关系
-
类是具有共同属性和行为的对象的抽象
-
类也被称为模板,提供了对象的基本框架
-
对象是根据类创造出来的实物
例如 定义一个人的类,属性包括年龄、性别,方法(行为)包括吃饭、睡觉
package javalearning.kkb7oob2; /** * @author chenxu * @date 2020/10/19 - 17:35 */ public class Person { String name =19; String sex=male; int age=99; public void eat(){ System.out,println("nice fodd"); } pbulic void sleep(){ System,out,println("good night"); } public static void main(String []args){ Person person = new Person(); person.eat(); } }
- 类中属性和方法是同一级别的
- 类体中不能出现可执行语句
对象如何创建以及如何调用对象的方法
- 声明对象
- 创建对象
- 使用对象
package javalearning.kkb7oob2; /** * @author chenxu * @date 2020/10/19 - 20:18 */ public class Car{ String color; public void start(){ System.out.println("gogoogogoogo"); } public static void main(String []args){ Car c;//声明对象 类名+ 对象名 c= new Car();//创建对象 //或者 Car c = new Car(); //使用对象 c.color = "blue";//操作对象的属性 c.start();//调用对象的方法 } }
构造方法
构造方法是一种特殊的方法,他是一个与类同名的方法,对象的创建是通过构造方法完成创建的,当类实例化一个对象时,会自动调用构造方法,它也可以重载
种类
- 无参构造
- 有参构造
作用
- 初始化对象
只有在创建对象的时候才会被调用,无法随意调用
- 初始化数据
可以吧
声明格式
方法名与类型相同,无返回值类型,void也无
格式:
修饰符 类名(参数列表){ }
例如:
public class car{
public car( ){
}
}
package javalearning.kkb7oob2;
/**
* @author chenxu
* @date 2020/10/19 - 17:53
*/
public class Person2 {
String name;
int age;
String sex;
public Person2(){
System.out.println("Person2.Person2");
}
public Person2(String name ,int age,String sex){
//通过形参给成员变量赋值
this.name = name;
this.age = age;
this.sex = sex;
}
public static void main(String[] args) {
Person2 bb = new Person2("王二纳兹",19,"女");
System.out.println(bb.sex+bb.name+bb.age);
}
}
this的三种用法***
-
表示对当前对象的引用 / /在构造函数中代指当前对象
-
表示用类的成员变量,而非函数参数
-
用于在构造方法中代指本类中其他构造方法,并且必须把this放在第一行
-
this不能用在静态方法中 static
package javalearning.kkb7oob2;
/**
* @author chenxu
* @date 2020/10/19 - 18:03
*/
public class Person4 {
//this作用3:在构造方法中代指本类中其他构造方法,如果其他方法为有参则this(参数1,,,,,,)若无则为this()
//只有在调用构造方法的时候this在第一行,其他this行数无所谓
//假如A构造方法调用B构造,那么B不能在调用A构造
String name;
int age;
String sex;
public Person4(String name, int age, String sex){
/*无法区分 成员变量和局部变量
name = name;
age = age;
sex = sex;*/
//this关键字 this.变量名
this.name = name;
this.age = age;
this.sex = sex;
}
public Person4(){
this("hh",18,"male");
}
public static void main(String[] args) {
Person4 p4 = new Person4();//即使此处调用的是无参构造,但是无参构造中使用this(参数);调用了本类中其他构造方法完成了有参构造
System.out.println(p4.age);//调用的是无参构造,但是无参构造中this又代指了本类中的有参构造
}
}
基本数据类型的参数传递
基本数据类型当实参传递时注意,他传递的是值,而不是变量本身
public class Changenum{ public void change(int x){ x=100; } public statci void main(String []args){ Changenum changenum = new Changenum(); int x = 200; changemum.change(x); System.out.println(x); } //此时输出的x为200,因为int x 等于200,change(x)只是将200 数据传递给成员方法,然而print中的x和成员方法中的x并非是同一个东西 }
引用类型数据传递
传递的是对象本身
package javalearning.kkb7oob2; /** * @author chenxu * @date 2020/10/19 - 19:45 */ public class Changenum2 { int x; public void Change(Changenum2 c){ c.x=1; } public static void main(String[] args) { Changenum2 cm2 = new Changenum2(); cm2.x=100; cm2.Change(cm2); System.out.println(cm2.x); //输出的是1 } }