java的面向对象指的是将我们的现实当中的事物抽象成一段java代码来描述,那现实当中的实体对象具有哪些方面是需要用代码的描述?
任何一个类需要从两方面描述
1、特征、属性 —-一定时间范围内不会变化
2、行为、功能、方法 — 该类事物可以发出的动作
在java里面概括为 属性 和 方法(函数)
public class Dog{
//特征 -- 属性
//修饰符 数据类型 属性名;
public String name;
public String color;
public String pingzhong;
public String sex;
//行为 -- 方法
//修饰符 void 方法名() {}
public void move() {
System.out.println("4条腿跑");
System.out.println("4条腿跑");
System.out.println("4条腿跑");
System.out.println("4条腿跑");
}
public void shut() {
System.out.println("汪汪的叫。。。");
}
}
此处注意:类体里面只能出现属性和方法, 代码是只能出现在方法里面。
根据类创建对象: new
类名 对象名/变量名 = new 类名();
public class Test{
public static void main(String args[]) {
//类名 对象名 = new 类名();
Dog hashiqi = new Dog();
hashiqi.name = "旺财";
hashiqi.sex = "公";
hashiqi.color = "黑色";
hashiqi.pingzhong = "哈士奇";
System.out.println(hashiqi.name);
hashiqi.move();
}
}
此时我们就可以利用对象名取调用属性和方法,
卸载软件: 解压软件
eclipse:我们java开发的IDE 集成开发环境
双击打开 进入选择工作空间的界面,工作空间尽量自己新建一个文件来是实现,因为工作空间是未来存放代码的地方。
进入软件之后,我们可以尝试开始编写代码,
新建工程 – src 新建。java文件写代码
方法讲解:
1、无返回值、无参数的方法 – 简单
public void name() {
}
2、无返回值、有参数的方法
public void name(类型 参数1, 类型参数2.。。。。。) {
}
当我们为该方法定义了参数的时候,我们在调用方法的时候就需要为这个参数赋值
在方法定义的时候我们实际上是规定方法的名字,是形参的格式,
在主方法里面进行方法调用的时候实际上我们是传递了实参【真实的数据】,
/**
* 比较两个数大小,并输出大的一个数
*/
public void getMax(int num1, int num2) {
if(num1 > num2) {
System.out.println(num1+"大");
}else {
System.out.println(num2+"大");
}
}
====================================
ShuXue baijuan = new ShuXue();
//半径为10的园的面积
baijuan.yuanMianJi(10);
//半径为20的园的面积
baijuan.yuanMianJi(20);
//getMax
baijuan.getMax(20,12);
参数类型不仅可以是基本数据类型,还是可以是复杂数据类型–类,
/**
* 判断一个人是否胖
*
* 方法的定义--规则
*
* 参数:形参 == 形式参数:规定参数的类型和个数
*/
public void isFat(Ren zhangsan, int num2) {
double resu = zhangsan.tizhong / zhangsan.shengao / 2;
if(resu < 18.5) {
System.out.println("苗条");
}else if(18.5 <= resu && resu <= 24.5) {
System.out.println("正常");
}else {
System.out.println("肥胖");
}
}
===============================
Ren liudehua = new Ren();
liudehua.shengao = 1.75;
liudehua.tizhong = 64;
//使用者 方法的调用 实参:我们传递的实际的数据
baijuan.isFat(liudehua,10);
总结:对于我们面向对象来说,核心的思想就是我们想要完成一个功能,就先创建对象,然后调用方法!,所以方法就是我们的面向对象的核心部分
3、有参数有返回值的方法
人有买水的功能,小明同学是人, 小明同学就有买水的功能。 我们就可以命令小明帮我们买水, 参数–给钱, 小明同学买好水以后会给我们一瓶水,这个水就是小明买水这个功能的返回值,这里有两个动作,一个水小明要给(返回动作),一个是我们要收(接收动作)
语法规则:
public 返回值类型 方法名字( 参数) {
return 返回的数据;
}
返回动作: return关键字
接收动作:调用的时候需要完成一个赋值操作
public class ShuXue3 {
public int getMax(int num1, int num2){
//条件表达式?结果1:结果2
int max = (num1>num2)?num1:num2;
// return
return max;
}
}
public static void main(String[] args) {
ShuXue3 baijuan = new ShuXue3();
int num = 1000;
num = baijuan.getMax(12, 23);
System.out.println(num);
}
复杂数据类型做返回值:
public Car zaoche(int num) {
Car benchi = new Car();
if(num == 1) {
benchi.color = "红色";
benchi.name = "奔驰";
benchi.price = 100000;
} else if(num == 2) {
benchi.color = "白色";
benchi.name = "宝马";
benchi.price = 200000;
} else {
benchi.color = "黑色";
benchi.name = "奥迪";
benchi.price = 300000;
}
return benchi;
}
public static void main(String[] args) {
Gongchang chang = new Gongchang();
Car dianluzi = chang.zaoche(2);
System.out.println(dianluzi.name);
}
4s点 找工厂提车 工厂生产车
工厂生产车 – 轮胎工厂生产轮胎
复杂数据类型做参数:
public class Car {
public String name;
public String color;
public int price;
public Luntai luntai;
}
类就是一个复杂的数据类型,和int、double一个意思。编写方式不一样,类一般是我们自定义,基本数据类型是java规定,而我们的类就是多个基本数据类型publclass Car {
public String name;
public String color;
public int price;
//属性
public Luntai luntai;
}
public class Gongchang {
/**
* 1 奔驰
* 2 宝马
* 3 奥迪
* @param num
* @return
*/
public Car zaoche(int num) {
Car benchi = new Car();
LuntaiGongchang luntaichang = new LuntaiGongchang();
if(num == 1) {
benchi.color = “红色”;
benchi.name = “奔驰”;
benchi.price = 100000;
benchi.luntai = luntaichang.zaoluntai();
} else if(num == 2) {
benchi.color = “白色”;
benchi.name = “宝马”;
benchi.price = 200000;
benchi.luntai = luntaichang.zaoluntai();
} else {
benchi.color = “黑色”;
benchi.name = “奥迪”;
benchi.price = 300000;
benchi.luntai = luntaichang.zaoluntai();
}
return benchi;
}
}
public class Luntai {
public String name;
public String color;
public double price;
}
public class LuntaiGongchang {
public Luntai zaoluntai() {
Luntai miqilin = new Luntai();
miqilin.name = "米其林";
miqilin.color = "黑色";
miqilin.price = 1700;
return miqilin;
}
}
利用对象做属性,同时赋值也通过创建对象赋值
面向对象的特征:
1、抽象
2、封装:
public class Person {
//公有
public String name;
//私有
private int age ;
//性别
/**
* 封装第一步,就是把属性私有化,步让外部可以访问
* 封装第二步,提供公开的方法来访问我们的私有属性
*/
/**
* 设置值
* @param age1
*/
public void setAge(int age1) {
if(age1 > 18) {
age = age1;
}else {
age = 18;
}
}
/**
* 拿到值
* @return
*/
public int getAge() {
return age;
}
}