Java面向对象讲解
类、对象、方法之间的关系(复习回顾)
首先导包,利用Scanner类创建对象,利用对象调用Scanner类中的方法,实现整形数据的输入。
import java.util.Scanner;
public class Test25 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
}
}
注意,类名是以大写字母开头的名词。如果有多个单词组成,每个单词第一个字母应该大写。不能使用Java保留字作为类名。示例:DemoClass
Java面向对象讲解(重点)
1、面向对象
- 面向对象是相对面向过程而言
- 面向对象和面向过程都是一种思想
- 面向过程强调的是功能、行为
- 面向对象:将功能封装进对象,强调具备了功能的对象
- 面向对象是基于面向过程的
2、类与对象的关系
面向对象三大基本特征:封装、继承、多态。而面向对象的过程就是找对象、建立对象、使用对象、维护对象的关系的过程。
类:对现实生活中事物的描述
对象:就是这类事物中实实在在存在的个体
图解:
汽车类
首先建一个汽车类(自己建,别给我说不会)类名就叫Car(注意命名规则)
package duixiang;
public class Car {
}
Test类
其次建一个检测类Test(主函数所在地),因为我们要在Test类中new一个对象用来调用Car类中的方法和属性。
package duixiang;
public class Test {
}
在Car类中定义Car的属性与方法
注意:属性又分为公有变量 public和私有变量 private
属性:
package duixiang;
public class Car {
public int wheel; //公有变量轮胎个数
private String color; //私有变量颜色
private int ID; //私有变量ID
}
方法:
public static void run(){ //汽车跑的方法
System.out.println("我会跑!");
}
public static void music(){ //汽车播放音乐的方法
System.out.println("我会播放音乐!");
}
在Test类中创建主函数(public static void main略略略)并用Car类new一个对象(这个对比着Scanner类来,唯一不同的是不用导包,因为我们本来就在同一个包中建立的类。)
package duixiang;
public class Test {
public static void main(String[] args) {
Car p = new Car();
}
}
用p这个对象去调用Car类中的方法。
package duixiang;
public class Test {
public static void main(String[] args) {
Car p = new Car();
p.run(); //调用run方法
p.music(); //调用music方法
p.wheel=4; //用p调用轮子属性给其赋
}
}
返回结果
那么有的同学就问了:那么我可不可以通过这个 对象.属性 的方式去给颜色和型号两个属性赋值呢?
答案是否定的!公有变量可以在其它类中通过 对象名.属性 的方式直接对属性进行调用和赋值,但私有变量必须通过get和set方法来对属性进行调用和赋值。
接下来我来教你们如何直接创建set和get方法。
//建立set和get方法
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
set和get方法就出现了!Nicece!!!!
接着我们就可以用这两个方法对私有变量进行调用和赋值咯!!!
package duixiang;
public class Test {
public static void main(String[] args) {
Car p = new Car();
p.run(); //调用run方法
p.music(); //调用music方法
p.wheel=4; //用p调用轮子属性给其赋值
/*
* 私有变量的调用
*/
p.setColor("蓝色"); //调用set方法对颜色进行赋值
p.setID(123123); //调用set方法对型号进行赋
System.out.println("轮子的个数是:"+p.wheel+"汽车的颜色:"+p.getColor()+"汽车的型号:"+p.getID());
// 对于私有变量,我们用get方法对设置的属性值进行输出
}
}
输出结果:
3、构造器(构造方法)
作用:构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
构造方法在对象创建时就已经执行了,而且只执行一次。其他方法可以自己手动调用,想调用几次就调用几次。
格式: 方法的名字必须和类的名字完全一致。构造方法不允许写返回值类型,void也不能写。命名格式如下
public 类名称(参数类型 参数名称) {
方法体
}
创建构造方法:
首先建一个空参构造方法。
其次,再建一个含参构造方法!
//无参构造方法
public Car() {
}
//含参构造方法
public Car(int wheel, String color, int ID) {
this.wheel = wheel;
this.color = color;
this.ID = ID;
}
然后我们就可以在Test类中直接再new一个对象,对这个对象中的参数直接赋值!
Car p1 = new Car(6,"红褐色",636366);
在Car类中在建立一个输出方法display用以对p1这个对象的属性进行输出!
public void display(){
System.out.println("轮子的个数是:"+wheel+";汽车的颜色:"+color+";汽车的型号:"+ID);
}
Test类中调用输出方法display
Test类代码
package duixiang;
public class Test {
public static void main(String[] args) {
Car p = new Car();
Car p1 = new Car(6,"红褐色",636366);
p.run(); //调用run方法
p.music(); //调用music方法
p.wheel=4; //用p调用轮子属性给其赋值
//私有变量的调用
p.setColor("蓝色"); //调用set方法对颜色进行赋值
p.setID(123123); //调用set方法对型号进行赋
System.out.println("轮子的个数是:"+p.wheel+"汽车的颜色:"+p.getColor()+"汽车的型号:"+p.getID());
// 对于私有变量,我们用get方法对设置的属性值进行输出
System.out.println("----------------------------");
//Test类中调用输出方法display
p1.display();
}
}
Car类代码
package duixiang;
public class Car {
public int wheel; //公有变量轮胎个数
private String color; //私有变量颜色
private int ID; //私有变量ID
/* @Override
public String toString() {
return "Car{" +
"wheel=" + wheel +
", color='" + color + '\'' +
", ID=" + ID +
'}';
}*/
//无参构造方法
public Car() {
}
//含参构造方法
public Car(int wheel, String color, int ID) {
this.wheel = wheel;
this.color = color;
this.ID = ID;
}
//建立set和get方法
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public void run(){ //汽车跑的方法
System.out.println("我会跑!");
}
public void music(){ //汽车播放音乐的方法
System.out.println("我会播放音乐!");
}
public void display(){
System.out.println("轮子的个数是:"+wheel+";汽车的颜色:"+color+";汽车的型号:"+ID);
}
}
最终输出: