首页 > 代码库 > 面向对象
面向对象
1.什么是类, 什么是对象?
对象是类的一种实例化, 对象用"属性"和"方法"来对应描述事物所具有的"静态属性"和"动态属性"
类是用于描述同一类形的对象的一个抽象的概念, 类中定义了这一类对象应该具有的"静态属性"和"动态属性"
类可以看成是一类对象的模板, 对象可以看成该类的一个具体实例
什么是类
学生是类, 瓶子是类, 老师是类
什么是对象
这个学生是对象, 这个瓶子是对象, 这个老师是对象, 符合这类事物的特征的某一个东西, 叫对象
职工:合适的方法出现在合适的类里
静态属性:
姓名: 张三
年龄: 24
工资: 3000
动态属性:
显示姓名
显示年龄
修改姓名
领取工资
2.类与类之间的关系
关联关系(最弱的一种关系):
A类中某个方法的参数是B类的某一个对象
举个例子(学生<--学校-->老师)
老师要讲课, 这是一个方法, 要传个参数进去, 参数是学生对象
继承关系(避免多重继承)
什么是一种什么
举个例子(运动员-->球类运动员-->篮球运动员)
聚合关系(聚集, 组合)
什么是什么的一部分
举个例子(球队-->(王队长, 队员))
组合----人: 头, 身体
聚集:构成这个类的这部分可以是这个类的, 也可以是另外一个类的,
组合:每一部分只属于一个类
实现关系
抽象类
接口:只管定义方法, 怎么实现由子类去做
举个栗子(接口(开车的方法), A类可以实现, B类也可以实现)
3.java类的定义, 对象和引用
定义一个类
public class 类名{
成员变量
方法
}
类名 标识符 = new 类名(); //对类的实例化
标识符.方法();
标识符.属性;
package com.hanqi.maya.mldel; import java.util.Date; public class Person { public String name; //属性 public String sex; //属性 public int age; //属性 public Date birthday; //属性 public String showName(){ //方法 System.out.println(name); return name; } public String showSex(){ //方法 System.out.println(sex); return sex; } public int showAge(){ //方法 System.out.println(age); return age; } public Date showBirthDay(){ //方法 System.out.println(birthday); return birthday; } }
package com.hanqi.maya.text; import java.util.Date; import com.hanqi.maya.mldel.Person; public class Main { //主方法/main函数/main方法 public static void main(String[] args) { Person person = new Person(); //实例化 person.name = "张三"; //赋值 person.age = 28; //赋值 person.sex = "男"; //赋值 person.birthday = new Date(); //赋值 person.showName(); //调用方法 person.showSex(); //调用方法 person.showAge(); //调用方法 person.showBirthDay(); //调用方法 } }
4.局部变量,必须赋值
package com.hanqi.maya.text; import java.util.Date; import com.hanqi.maya.mldel.Person; public class Main { //主方法/main函数/main方法 public static void main(String[] args) { int a = 5; //局部变量,必须要把局部变量赋值 System.out.println(a); } }
5.成员变量,Java里面会自动赋值
package com.hanqi.maya.mldel; import java.util.Date; public class Person { //属性,成员变量 public String name; //属性 public boolean sex; public int age; public Date birthday; public String showName(){ //方法; 带返回值的 System.out.println(name); return name; } public void showAllInfo(){ //showAllInfo 打印所有的信息;void 不带返回值的 System.out.println(name); System.out.println(sex); System.out.println(age); System.out.println(birthday); } }
package com.hanqi.maya.text; import java.util.Date; import com.hanqi.maya.mldel.Person; public class Main { //主方法/main函数/main方法 public static void main(String[] args) { Person person = new Person(); //实例化 person.showAllInfo(); } }
6.构造方法
package com.hanqi.maya.model; public class Person { public String name; public Person(){ //空的构造方法 } public Person(String _name){ name = _name; } public String showNmae(){ System.out.println(name); return name; } }
package com.hanqi.maya.text; import com.hanqi.maya.model.Person; public class Main { public static void main(String[] args) { Person p = new Person("张三2"); p.showNmae(); } }
package com.hanqi.maya.model; public class Person { public String name; public Person(){ //空的构造方法 } public Person(String _name){ System.out.println("调用person类的构造方法!"); name = _name; } public String showNmae(){ System.out.println(name); return name; } }
package com.hanqi.maya.text; import com.hanqi.maya.model.Person; public class Main { public static void main(String[] args) { Person p = new Person("张三"); } }
举例:车行驶公里数
package com.hanqi.maya.mldel; public class Car { //成员变量 public String pinpai; public String chexing; public double price; public int yh; public double lc; public int yxrj;//油箱容积 public int syyl;//剩余油量 public Car(){ //空参构造方法 } public Car(String _pinpai,String _chexing,double _price,int _yh,int _yxrj){ //带参数的构造方法 pinpai = _pinpai; chexing = _chexing; price = _price; yh = _yh; lc = 0; yxrj=_yxrj; syyl=_yxrj - 1; } public void run(double gonglishu){ //不带返回值的的成员方法 double d =(gonglishu/100) * yh; syyl = (int) (syyl - d); System.out.println("行驶" + gonglishu + "公里,共消耗"+ d + "L汽油"); } public void showInfo(){ //不带返回值的的成员方法 System.out.println("品牌:"+ pinpai); System.out.println("车型:"+ chexing); System.out.println("价格:"+ price); System.out.println("油耗:"+ yh+"L/百公里"); System.out.println("总里程数:"+ lc); System.out.println("油箱容积:"+yxrj+"L"); System.out.println("剩余油量"+syyl+"L"); System.out.println("===================="); } }
package com.hanqi.maya.text; import com.hanqi.maya.mldel.Car; public class MainCar { public static void main(String[] args){ Car car = new Car("起亚","K5",15.88,10,60); car.showInfo(); car.run(130); car.showInfo(); } }
面向对象